网站首页 > 教程文章 正文
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-05-21 10张图带你深入理解Docker容器和镜像
- 2025-05-21 Docker实战(二):快速学会镜像的基本使用
- 2025-05-21 那些被"删除"却仍占用空间的文件
- 2025-05-21 Docker镜像与容器的区别
- 2025-05-21 Docker基础知识之操作镜像
- 2025-05-21 带你找回那些被 Docker 吃掉的磁盘空间
- 2025-05-21 Docker工具的使用方法进阶-关于镜像
- 2025-05-21 无论是开发还是运维,都必须掌握的Docker常用命令
- 2025-05-21 Windows 上 Docker 镜像与容器更新全攻略
- 2025-05-21 docker常用命令大全,看这一篇就够了
- 最近发表
- 标签列表
-
- location.href (44)
- document.ready (36)
- git checkout -b (34)
- 跃点数 (35)
- 阿里云镜像地址 (33)
- qt qmessagebox (36)
- mybatis plus page (35)
- vue @scroll (38)
- 堆栈区别 (33)
- 什么是容器 (33)
- sha1 md5 (33)
- navicat导出数据 (34)
- 阿里云acp考试 (33)
- 阿里云 nacos (34)
- redhat官网下载镜像 (36)
- srs服务器 (33)
- pico开发者 (33)
- https的端口号 (34)
- vscode更改主题 (35)
- 阿里云资源池 (34)
- os.path.join (33)
- redis aof rdb 区别 (33)
- 302跳转 (33)
- http method (35)
- js array splice (33)