【Docker 镜像】笔记📒

2025-10-21 22:38:48

目录:

查看本地镜像列表

$ docker images
REPOSITORY                      TAG       IMAGE ID       CREATED         SIZE
wordpress-docker-php            latest    14f51c8a85db   4 days ago      494MB
nginx                           alpine    9c92f55c0336   13 days ago     53.3MB
node                            lts       e5b3a7bc72bb   3 weeks ago     1.13GB

查看网络镜像列表

$ docker search node
NAME               DESCRIPTION                                      STARS     OFFICIAL
node               Node.js is a JavaScript-based platform for s…   14034     [OK]
bitnami/node       Bitnami Secure Image for node                    83        
cimg/node          The CircleCI Node.js Docker Convenience Imag…   25        
circleci/node      Node.js is a JavaScript-based platform for s…   135       

查看镜像详情

$ docker inspect nginx:latest 
[
    {
        "Id": "sha256:bdf62fd3a32f1209270ede068b6e08450dfe125c79b1a8ba8f5685090023bf7f",
        "RepoTags": [
            "nginx:latest"
        ],
        "RepoDigests": [
            "nginx@sha256:fb197595ebe76b9c0c14ab68159fd3c08bd067ec62300583543f0ebda353b5be"
        ],
        "Parent": "",
        "Comment": "buildkit.dockerfile.v0",
        "Created": "2024-11-26T18:42:08Z",
        "DockerVersion": "",
        "Author": "",
        "Architecture": "arm64",
        "Variant": "v8",
        "Os": "linux",
        "Size": 197054391,
        "GraphDriver": {
            "Data": {
                "LowerDir": "/var/lib/docker/overlay2/588ae1db4e9dfa21d5e55e559135e9a3ad44c13651daa150579d14e53f3703b2/diff:/var/lib/docker/overlay2/fee652e354413b323a6a422e91384a556dbae39383c9110c4f537dd2523afbd7/diff:/var/lib/docker/overlay2/1f0cf92d4153cd62e1b8bee131f46a591ef84c51aa18aafb7e9e6193286321a9/diff:/var/lib/docker/overlay2/a40792ffbb5f719271a76d78f97c7ca757063c08e38d90d54cf8e0ded8d91c3e/diff:/var/lib/docker/overlay2/3e168ba4fdd28805e58a75ff0bca5b0cd79d22429fba0e76548ea00890b2f244/diff:/var/lib/docker/overlay2/d759882f3ead4a35cace7217567e06b7047f283dfc28788be65d97005542cab9/diff",
                "MergedDir": "/var/lib/docker/overlay2/1b94b9312214f430a347027acdb4f1504966ec892d06b1a5ce10675fdb1b24ce/merged",
                "UpperDir": "/var/lib/docker/overlay2/1b94b9312214f430a347027acdb4f1504966ec892d06b1a5ce10675fdb1b24ce/diff",
                "WorkDir": "/var/lib/docker/overlay2/1b94b9312214f430a347027acdb4f1504966ec892d06b1a5ce10675fdb1b24ce/work"
            },
            "Name": "overlay2"
        },
        "RootFS": {
            "Type": "layers",
            "Layers": [
                "sha256:3e620c160447d1acff162610a533282fc64863123cba28ce40eaf98c17dde780",
                "sha256:880d2e736b16ec27cfe93230185b7fa9123b9b7007914ab06cad3dbcd03deaa0",
                "sha256:2c447934d7f2bbb627efecbd26692a9e28319d38d2936f7511bca77ffb7096de",
                "sha256:d06e03e55b64954a14f3de88bd37021e6c7c6d7d15aec93c6333e59ceb775f38",
                "sha256:d5c9fed2bbd4a673fc59864804e3f6a08cb72447eb5dc631c2f6903fbb089f57",
                "sha256:fc2efc334561650ca0f2be4e0245c176004739f50a5f965add8e6b417c227f03",
                "sha256:d93fefef05de8f71849a265e65bc5df15c67fbe7b14e51cac17794cb9f11ca1f"
            ]
        },
        "Metadata": {
            "LastTagTime": "2025-10-21T15:13:39.935709796Z"
        },
        "Config": {
            "Cmd": [
                "nginx",
                "-g",
                "daemon off;"
            ],
            "Entrypoint": [
                "/docker-entrypoint.sh"
            ],
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "NGINX_VERSION=1.27.3",
                "NJS_VERSION=0.8.7",
                "NJS_RELEASE=1~bookworm",
                "PKG_RELEASE=1~bookworm",
                "DYNPKG_RELEASE=1~bookworm"
            ],
            "ExposedPorts": {
                "80/tcp": {}
            },
            "Labels": {
                "maintainer": "NGINX Docker Maintainers \u003cdocker-maint@nginx.com\u003e"
            },
            "OnBuild": null,
            "StopSignal": "SIGQUIT",
            "User": "",
            "Volumes": null,
            "WorkingDir": ""
        }
    }
]

只想看其中某个字段,使用 -f 参数

$ docker inspect nginx:latest -f {{.Architecture}}
arm64

查看镜像构建历史

镜像是由多个层组成的,docker history 可以查看各层的创建信息

$ docker history nginx:latest
IMAGE          CREATED         CREATED BY                                       SIZE      COMMENT
bdf62fd3a32f   10 months ago   CMD ["nginx" "-g" "daemon off;"]                 0B        buildkit.dockerfile.v0
<missing>      10 months ago   STOPSIGNAL SIGQUIT                               0B        buildkit.dockerfile.v0
<missing>      10 months ago   EXPOSE map[80/tcp:{}]                            0B        buildkit.dockerfile.v0
<missing>      10 months ago   ENTRYPOINT ["/docker-entrypoint.sh"]             0B        buildkit.dockerfile.v0
<missing>      10 months ago   COPY 30-tune-worker-processes.sh /docker-ent…   4.62kB    buildkit.dockerfile.v0
<missing>      10 months ago   COPY 20-envsubst-on-templates.sh /docker-ent…   3.02kB    buildkit.dockerfile.v0
<missing>      10 months ago   COPY 15-local-resolvers.envsh /docker-entryp…   389B      buildkit.dockerfile.v0
<missing>      10 months ago   COPY 10-listen-on-ipv6-by-default.sh /docker…   2.12kB    buildkit.dockerfile.v0
<missing>      10 months ago   COPY docker-entrypoint.sh / # buildkit           1.62kB    buildkit.dockerfile.v0
<missing>      10 months ago   RUN /bin/sh -c set -x     && groupadd --syst…   99.9MB    buildkit.dockerfile.v0
<missing>      10 months ago   ENV DYNPKG_RELEASE=1~bookworm                    0B        buildkit.dockerfile.v0
<missing>      10 months ago   ENV PKG_RELEASE=1~bookworm                       0B        buildkit.dockerfile.v0
<missing>      10 months ago   ENV NJS_RELEASE=1~bookworm                       0B        buildkit.dockerfile.v0
<missing>      10 months ago   ENV NJS_VERSION=0.8.7                            0B        buildkit.dockerfile.v0
<missing>      10 months ago   ENV NGINX_VERSION=1.27.3                         0B        buildkit.dockerfile.v0
<missing>      10 months ago   LABEL maintainer=NGINX Docker Maintainers <d…   0B        buildkit.dockerfile.v0
<missing>      10 months ago   # debian.sh --arch 'arm64' out/ 'bookworm' '…   97.2MB    debuerreotype 0.15

拉取镜像

docker pull NAME[:tag]

默认是从 Docker hub 拉取镜像,不带标签号默认会拉取最新版本但不一定稳定的镜像,生产环境最好带上标签号拉镜像。

国内仓库有哪些?怎么验证是否有效?怎么切换国内仓库拉镜像?
国内注册服务器貌似都挂了

镜像别名

为镜像起个别名,相当于软链接,实际上还是同一个镜像,image id 还是一样的

$ docker images
nginx                           latest    bdf62fd3a32f   10 months ago   197MB

$ docker tag nginx:latest mynginx:latest
$ docker images
nginx                           latest    bdf62fd3a32f   10 months ago   197MB
mynginx                         latest    bdf62fd3a32f   10 months ago   197MB

如果要删除 mynginx:latest,直接使用 docker rmi mynginx:latest 即可。

删除镜像

指定镜像名标签或者镜像id都可以删除镜像,如果有基于此镜像创建的容器,需要先把容器删除之后才能删除镜像。

$ docker rmi nginx:latest

基于已有镜像创建镜像

$ docker run -it nginx:latest /bin/bash
# touch test
# exit

# 格式: docker commit -m "提交信息" -a "作者信息" <container-id> name:tag
$ docker commit -m "Add a new file" <container-id> test:01

基于压缩包创建镜像

docker export 导出的文件导入到 Docker 中变成镜像。

$ docker import my_rootfs.tar.gz my_image:latest

docker import 与 docker load 区别?

🛠️ 如何选择?

基于Dockerfile创建镜像

存储镜像

导出镜像到本地文件,方便备份或者传输。

$ docker save -0 ubuntu_14.04.tar ubuntu:14.04

载入镜像

将 docker save 导出的 tar 包再导入本地镜像库,这将导入镜像及其元数据信息(包括标签等)。

$ docker load -i ubuntu_14.04.tar
$ docker load < ubuntu_14.04.tar

上传镜像

使用 docker push 命令上传镜像到仓库,默认是 Docker Hub 官方仓库。

例如用户 user 上传本地的 test:latest 镜像,可以先添加新的标签 user/test:latest,然后再使用 docker push 命令上传。

# 登录 Docker Hub
$ docker login 

$ docker tag test:latest user/test:latest
$ docker push user/test:latest

为什么要添加新标签?

用户 alice 要上传 test:latest 镜像,用户 bob 也要上传 test:latest 镜像,如果不添加新标签,那么最终上传到 Docker Hub 的镜像名都是 test:latest,这样会覆盖掉彼此的镜像,添加新标签后,最终上传到 Docker Hub 的镜像名是 alice/test:latest 和 bob/test:latest,互不冲突。

返回首页

本文总阅读量  次
皖ICP备17026209号-3
总访问量: 
总访客量: