Files
Cloud-book/Docker/Docker镜像管理.md
2025-08-27 17:10:05 +08:00

4.1 KiB
Raw Permalink Blame History

镜像

容器是一个独立的进程,它从哪里获取文件和配置?如何共享这些环境?

镜像是一个标准化包,其中包含运行容器所需的所有文件、二进制文件、库和配置。

  • MySQL 镜像会打包数据库二进制文件、配置文件和其他依赖项。
  • Python Web 应用镜像会打包 Python 运行时、应用代码及其所有依赖项。

镜像两个重要原则:

  1. 镜像是不可变的。一旦创建,就无法修改。只能创建新镜像或在其上进行更改。
  2. 镜像由层组成。每一层代表一组文件系统变更,包括添加、删除或修改文件。

镜像管理

搜索镜像

Usage: docker search [OPTIONS] TERM

# 搜索包含关键字的镜像
[root@docker-server ~]# docker search centos

可以看到返回了很多包含关键字的镜像,其中包括镜像名字、描述、点赞数(表示该镜像的受欢迎程度)、是否官方创建、是否自动创建。默认输出结果按照星级评价进行排序。

img

下载镜像

Usage: docker pull [OPTIONS] NAME[:TAG|@DIGEST]

# 下载nginx、centos、hello-world镜像
[root@docker-server ~]# docker pull nginx
[root@docker-server ~]# docker pull centos
[root@docker-server ~]# docker pull hello-world

其中NAME是镜像名称TAG是镜像的标签往往用来是表示版本信息通常情况下描述一个镜像需要包括名称+标签如果不指定标签标签的值默认为latest。

镜像列表

Usage: docker image COMMAND

# 列出本地所有镜像
[root@docker-server ~]# docker image ls
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
nginx         latest    d1a364dc548d   2 weeks ago    133MB
...

# 字段说明
- REPOSITORY镜像仓库名称
- TAG镜像的标签信息
- 镜像ID唯一用来标识镜像如果两个镜像的ID相同说明他们实际上指向了同一个镜像只是具有不同标签名称而已
- CREATED创建时间说明镜像的最后更新时间
- SIZE镜像大小优秀的镜像往往体积都较小

镜像标签

Usage: docker image tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

[root@docker-server ~]# docker tag centos:latest mycentos:latest
[root@docker-server ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
nginx         latest    d1a364dc548d   2 weeks ago    133MB
...

镜像信息

Usage: docker image inspect [OPTIONS] IMAGE [IMAGE...]

[root@docker-server ~]# docker inspect centos:latest 
[
    {
        "Id": "sha256:300e315adb2f96afe5f0b2780b87f28ae95231fe3bdd1e16b9ba606307728f55",
        "RepoTags": [
            "centos:latest",
            "mycentos:latest"
        ]
        ...
    }
]

镜像创建信息

Usage: docker image history [OPTIONS] IMAGE

[root@docker-server ~]# docker history centos:latest 
IMAGE          CREATED        CREATED BY                                      SIZE      COMMENT
300e315adb2f   6 months ago   /bin/sh -c #(nop)  CMD ["/bin/bash"]            0B        
...

镜像导出

Usage: docker image save [OPTIONS] IMAGE [IMAGE...]

[root@docker-server ~]# docker image save centos:latest -o /opt/centos.tar.gz
[root@docker-server ~]# ll /opt/centos.tar.gz 
-rw------- 1 root root 216535040 6月   9 10:33 /opt/centos.tar.gz
[root@docker-server ~]# docker image save centos:latest > /opt/centos-1.tar.gz
[root@docker-server ~]# ll /opt/centos-1.tar.gz 
-rw-r--r-- 1 root root 216535040 6月   9 10:35 /opt/centos-1.tar.gz

镜像导入

Usage: docker image load [OPTIONS]

[root@docker-server ~]# docker image load -i /opt/centos.tar.gz 
Loaded image: centos:latest
[root@docker-server ~]# docker image load < /opt/centos.tar.gz 
Loaded image: centos:latest

删除镜像

Usage: docker image rm [OPTIONS] IMAGE [IMAGE...]

[root@docker-server ~]# docker image rm nginx:latest 
Untagged: nginx:latest
Untagged: nginx@sha256:6d75c99af15565a301e48297fa2d121e15d80ad526f8369c526324f0f7ccb750
[root@docker-server ~]# docker image rm 300e315adb2f
...