Docker - 镜像
Docker - 镜像
Section titled “Docker - 镜像”Docker 镜像(image) 是容器(container)的蓝图。它们是只读模板,包含应用程序运行所需的代码、库、依赖项、工具和其他文件。 容器 是镜像的可运行实例。
当你运行类似 docker run hello-world 的命令时:
docker:Docker 客户端命令。run:用于创建和启动容器的命令。hello-world:用作容器模板的镜像名称。如果在本地未找到此镜像,Docker 会尝试从配置的 镜像仓库(registry)(默认为 Docker Hub)下载(拉取,pull)它。
列出 Docker 镜像 (docker images)
Section titled “列出 Docker 镜像 (docker images)”要查看当前存储在你本地机器上的 Docker 镜像列表,请使用 docker images 命令(或 docker image ls)。
docker images输出显示每个镜像的信息:
REPOSITORY:镜像 仓库(repository)的名称(例如,ubuntu、nginx、yourusername/myapp)。TAG:仓库中特定的 版本或变体标识符(例如,22.04、latest、1.0、stable-alpine)。如果省略,通常默认为latest。IMAGE ID:镜像的唯一标识符。CREATED:镜像构建的时间。SIZE:镜像占用的磁盘空间大小。
示例输出:
REPOSITORY TAG IMAGE ID CREATED SIZEhello-world latest fbbc894d6882 7 months ago 13.3kBubuntu 22.04 a7be6190844e 2 weeks ago 77.8MBnginx stable-alpine c7150a2f507e 3 days ago 23.5MBmy-apache-server 1.0 e4b1a9f8d2c1 5 minutes ago 198MB下载镜像 (docker pull)
Section titled “下载镜像 (docker pull)”虽然 docker run 在本地不存在镜像时会自动 拉取(pull)镜像,但你可以使用 docker pull 明确地下载镜像。
# 拉取 MySQL 镜像的特定版本 8.0docker pull mysql:8.0这会从镜像仓库(通常是 Docker Hub)下载镜像层并将其存储在本地。
删除镜像 (docker rmi)
Section titled “删除镜像 (docker rmi)”要删除一个或多个本地镜像并释放磁盘空间,请使用 docker rmi 命令(或 docker image rm)。你可以通过镜像 ID 或 仓库:标签(repository:tag) 组合来引用镜像。
# 按仓库和标签删除 hello-world 镜像docker rmi hello-world:latest
# 按 IMAGE ID 删除 ubuntu 镜像(使用前几个唯一的字符)docker rmi a7be6190844e
# 删除多个镜像docker rmi mysql:8.0 my-apache-server:1.0注意:你不能删除当前被容器使用的镜像(即使是已停止的容器)。在删除镜像之前,你必须先删除容器(docker rm <container_id>)。可以使用 -f 标志(docker rmi -f <image>)来强制删除,但请谨慎使用。
要轻松删除未使用的镜像(悬空镜像 - dangling images,即没有标签的镜像,通常是构建后剩余的),请使用:
docker image prune要删除所有未使用的镜像(不仅仅是悬空镜像):
docker image prune -a检查镜像 (docker inspect)
Section titled “检查镜像 (docker inspect)”要获取关于镜像的详细、底层信息(JSON 格式),包括其层、环境变量、暴露的端口和构建历史,请使用 docker inspect。
docker inspect nginx:stable-alpine这对于理解镜像是如何构建和配置的很有用。
镜像打标签 (docker tag)
Section titled “镜像打标签 (docker tag)”你可以为现有镜像创建额外的 标签(tag)。这通常在将镜像 推送到(push) 镜像仓库之前使用。
# 为本地镜像 'my-apache-server:1.0' 打上适合 Docker Hub 的新标签docker tag my-apache-server:1.0 yourdockerhubusername/my-web-app:v1现在,yourdockerhubusername/my-web-app:v1 指向与 my-apache-server:1.0 相同的镜像 ID。这并不会复制镜像数据。