第二节.docker镜像管理
- 介绍
- docker镜像是一个不包含Linux内核的操作系统
- [root@data docker]# docker image ls
- REPOSITORY TAG IMAGE ID CREATED SIZE
- nginx latest 8c9ca4d17702 2 days ago 109MB
- 镜像由docker公司的公共镜像仓库下载
- 镜像与容器的联系
- 通过docker history <id/name>查看镜像中各层的内容及大小,每层对应着dockerfile中的一个指令,docker镜像默认存储在/var/lib/dockerk/<storage-driver>中
- 容器其实就是在镜像的最上面加了一层读写层,在运行容器里做的任何修改,都会写到这个读写层。如果容器删除了,最上面的读写层数据也就丢失了。docker使用存储驱动管理镜像每层内容及可读写的容器层
- 存储驱动
- Ubuntu
- aufs devicemapper overlay2 overlay zfs vfs
- Debian
- aufs devicemapper overlay2 vfs overlay
- centos(6)
- devicemapper vfs overlay(7)
- fedora
- devicemapper overlay2 overlay vfs
- overlay overlay2 – ext4,xfs
- aufs -ext4,xfs
- devicemapper – direct-lvm
- btrfs -btrfs
- zfs -zfs
- Ubuntu
- docker镜像管理常用的命令
- ls列出镜像
- 使用实例
- [root@data docker]# docker image ls
- REPOSITORY TAG IMAGE ID CREATED SIZE
- nginx latest 8c9ca4d17702 2 days ago 109MB
- 使用实例
- build构建镜像(来自dockerfile)
- history查看镜像历史(执行了那些步骤)
- 使用实例
- [root@data docker]# docker image history nginx:latest
- IMAGE CREATED CREATED BY SIZE COMMENT
- 8c9ca4d17702 2 days ago /bin/sh -c #(nop) CMD [“nginx” “-g” “daemon… 0B
- <missing> 2 days ago /bin/sh -c #(nop) STOPSIGNAL SIGTERM 0B
- <missing> 2 days ago /bin/sh -c #(nop) EXPOSE 80 0B
- <missing> 2 days ago /bin/sh -c ln -sf /dev/stdout /var/log/nginx… 22B
- <missing> 2 days ago /bin/sh -c set -x && apt-get update && apt… 54MB
- <missing> 2 days ago /bin/sh -c #(nop) ENV NJS_VERSION=1.15.9.0.… 0B
- <missing> 2 days ago /bin/sh -c #(nop) ENV NGINX_VERSION=1.15.9-… 0B
- <missing> 3 weeks ago /bin/sh -c #(nop) LABEL maintainer=NGINX Do… 0B
- <missing> 3 weeks ago /bin/sh -c #(nop) CMD [“bash”] 0B
- <missing> 3 weeks ago /bin/sh -c #(nop) ADD file:5a6d066ba71fb0a47… 55.3MB
- 使用实例
- inspect显示一个或多个镜像详细信息
- 使用实例
- [root@data docker]# docker image inspect nginx:latest
- [
- {
- “Id”: “sha256:8c9ca4d17702c354fa41432be278d8ce6c0761b1302608034fa3ad49c6da43f9”,
- “RepoTags”: [
- “nginx:latest”
- ],
- “RepoDigests”: [
- “nginx@sha256:18c0755594af107923baa2e65fcef35aea4ab0cea7862d19c27aa127bacb458e”
- ],
- 。。。。。。。
- 使用实例
- pull从镜像仓库拉取镜像
- 实例
- [root@data docker]# docker pull nginx:1.11 —-<name:version>
- Using default tag: latest
- latest: Pulling from library/nginx
- Digest: sha256:18c0755594af107923baa2e65fcef35aea4ab0cea7862d19c27aa127bacb458e
- Status: Image is up to date for nginx:latest
- [root@data docker]# docker image pull nginx
- Using default tag: latest
- latest: Pulling from library/nginx
- Digest: sha256:18c0755594af107923baa2e65fcef35aea4ab0cea7862d19c27aa127bacb458e
- Status: Image is up to date for nginx:latest
- 实例
- push推送一个镜像到仓库(需要登录)
- rm删除镜像
- 实例
- [root@data docker]# docker image rm httpd:latest
- Untagged: httpd:latest
- Untagged: httpd@sha256:5e7992fcdaa214d5e88c4dfde274befe60d5d5b232717862856012bf5ce31086
- Deleted: sha256:d3a13ec4a0f1157fb3502ec1248f2b1e7dbeeb6a2e21e0c1d3f43b7a494221ed
- Deleted: sha256:ffda16bd6375fb3b126592485a714e2ff95575600128c4ef2d34207573284206
- Deleted: sha256:61d9f00c32aab3132c865ccf069bfeead749a949df6f96f6e3bb800eef193c46
- Deleted: sha256:c8a247f5bfa5b62fc08f2f18df0e6a4873e0a3eceb15abb906092eecaa84d9fc
- Deleted: sha256:04eb6e2a1ea13cc4832d2b15e7ba5295b0fbf5c9f9f40e0a27fd0be1c7b3a1c7
- 实例
- prune移除未使用的镜像。没有被标记或被任何容器引用的
- tag创建一个引用镜像标记目标镜像
- 实例
- [root@data docker]# docker image tag nginx:latest nginx:1.15
- [root@data docker]# docker images
- REPOSITORY TAG IMAGE ID CREATED SIZE
- nginx 1.15 8c9ca4d17702 2 days ago 109MB
- nginx latest 8c9ca4d17702 2 days ago 109MB
- 实例
- save保存一个或多个镜像到一个tar归档文件
- 实例
- docker image save nginx:1.15 > /tmp/nginx15.tar
- 实例
- load加载镜像来自tar归档或标准输入
- 实例
- docker image load < /tmp/nginx15.tar
- 实例
- ls列出镜像