网站首页 > 技术教程 正文
1、获取镜像
在 Docker 中,获取(下载)镜像通常使用 docker pull 命令:
基本用法:
docker pull 镜像名称[:标签]
例如:
docker pull nginx # 默认拉取 nginx:latest
docker pull ubuntu:20.04 # 拉取指定版本
常见例子:
- 拉取最新的 Python 官方镜像:
- docker pull python
- 拉取特定版本的 MySQL:
- docker pull mysql:8.0
指定镜像仓库:
如果你使用的是私有仓库或镜像加速器,比如阿里云、Docker Hub 镜像加速器,也可以指定仓库地址:
docker pull registry.xxxx.com/your_namespace/your_image:tag
注意事项:
- 如果未指定 :标签,默认是 :latest。
- 镜像会被下载到本地,存储在 Docker 的本地镜像缓存中(通过 docker images 可查看)。
- 若拉取失败,可以检查网络或镜像名是否正确。
二、列出镜像
在 Docker 中列出本地已有的镜像,可以使用以下命令:
docker images
或者更完整的形式是:
docker image ls
输出示例:
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 4bb46517cac3 2 weeks ago 142MB
ubuntu 20.04 ba6acccedd29 3 weeks ago 72.9MB
常用选项:
- -a 或 --all:列出所有镜像(包括中间层镜像)。
- --digests:显示镜像的摘要(digest 值)。
- --format:自定义输出格式,例如:
docker images --format "{{.Repository}}:{{.Tag}}"
三、删除镜像
在 Docker 中删除镜像可以使用以下命令:
删除镜像的命令:
docker rmi 镜像ID或镜像名
示例:
- 根据镜像名删除:
- docker rmi nginx
- 根据镜像 ID 删除(可以通过 docker images 查看 ID):
- docker rmi 4bb46517cac3
- 同时删除多个镜像:
- docker rmi nginx ubuntu:20.04
注意事项:
- 如果某个镜像正被某个容器使用(即使容器已经停止),无法直接删除,会提示错误。
- 可以先删除容器:
- docker rm 容器ID
- 然后再删除镜像。
- 强制删除(不推荐,除非你确定):
- docker rmi -f 镜像ID或名称
清理所有无用镜像(dangling images):
docker image prune
或者更彻底的清理(包含未使用的镜像、容器、网络等):
docker system prune
四、利用 commit 理解镜像构成
使用 docker commit 是理解镜像构成和 Docker 镜像本质的一种很直观的方式。我们来一步一步解释并实践通过 docker commit 来理解镜像是如何构成的。
一句话理解 Docker 镜像:
Docker 镜像是由一层一层的只读文件系统组成的,每一层都是一次文件系统变更(添加/修改/删除),最终组合成一个完整的系统环境。
docker commit是什么?
docker commit 可以把某个容器的当前状态保存成一个新的镜像。
它的作用类似于你对一个系统做了一些更改(比如安装了软件、改了配置),然后打个快照,保存成新的镜像。
实战:用commit构建镜像,理解其组成
第一步:运行一个容器(交互模式)
docker run -it ubuntu:20.04 bash
你现在就在一个 Ubuntu 容器里面了。
第二步:做一些修改
比如安装 curl:
apt update && apt install -y curl
exit
第三步:提交为新镜像
docker ps -a # 找到刚才的容器 ID
docker commit <容器ID> my-ubuntu-with-curl
你现在就有了一个新的镜像:my-ubuntu-with-curl
查看它:
docker images
第四步:验证新镜像
docker run -it my-ubuntu-with-curl bash
curl --version # 你会发现 curl 已经存在
它如何帮助理解镜像构成?
每次你提交镜像,其实就是为原有镜像加了一层新的文件系统(包括你对容器文件系统的更改)。Docker 镜像本质上是一堆只读层 + 一个元数据结构(包括命令历史、父层关系等)。
你可以通过下面命令查看镜像的历史(即各层构成):
docker history my-ubuntu-with-curl
你会看到一系列层,有些是来自原始镜像(ubuntu),有些是你通过 commit 添加的。
延伸:对比Dockerfile和commit
方法 | 说明 | 推荐程度 |
docker commit | 类似快照,适合临时保存容器状态 | 不利于版本管理,不推荐生产使用 |
Dockerfile | 声明式、可重现构建方式 | 推荐方式 |
猜你喜欢
- 2025-08-02 全网最全-GNS3网工模拟器操作手册
- 2025-08-02 12年!Canonical将为Ubuntu 24.04 LTS发行版提供5+7年支持
- 2025-08-02 渗透神器“msf”,你真的会用吗??黑客大神手把手教
- 2025-08-02 企业安全之利器 配置入侵检测系统OSSEC
- 2025-08-02 Linux入门-shell编程-适合小白
- 2025-08-02 免费开源 .NET OpenCV 迷你运行时全平台发布
- 2025-08-02 Linux Sudo chroot 漏洞使黑客能够将权限提升至 Root
- 2025-08-02 升级个系统:AMD Zen5处理器性能飙升75%
- 2025-08-02 脚本应用!Ubuntu中安装最新Linux内核
- 2025-08-02 英伟达Grace服务器CPU实测不弱于AMD和英特尔产品
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- sd分区 (65)
- raid5数据恢复 (81)
- 地址转换 (73)
- 手机存储卡根目录 (55)
- tcp端口 (74)
- project server (59)
- 双击ctrl (55)
- 鼠标 单击变双击 (67)
- debugview (59)
- 字符动画 (65)
- flushdns (57)
- ps复制快捷键 (57)
- 清除系统垃圾代码 (58)
- web服务器的架设 (67)
- 16进制转换 (69)
- xclient (55)
- ps源文件 (67)
- filezilla server (59)
- 句柄无效 (56)
- word页眉页脚设置 (59)
- ansys实例 (56)
- 6 1 3固件 (59)
- sqlserver2000挂起 (59)
- vm虚拟主机 (55)
- config (61)
本文暂时没有评论,来添加一个吧(●'◡'●)