Docker镜像管理
Docker镜像是一个不包含Linux内核而又精简的Linux的操作系统。
Dock镜像下载
Docker Hub 是由Docker公司负责维护的公共注册中心,包含大量的容器镜像,Docker工具默认从这个公共镜像库下载镜像:https://hub.docker.com/explore
默认是国外的源,下载会很慢,可以使用国内的源提供下载速度:参考上一节镜像加速器
镜像的工作原理
当我们启动一个新的容器时,Docker会加载只读镜像,并在其之上添加一个读写层,并将镜像中的目录复制一份到/var/lib/docker/aufs/mnt/容器ID为目录下,我们可以使用chroot进入此目录。
如果运行中的容器修改一个已经存在的文件,那么会将该文件从下面的只读层复制到读写层,只读层的这个文件就会覆盖,但还存在,这就实现了文件系统隔离,当删除容器后,读写层的数据将会删除,只读镜像不变。
镜像的文件存储结构
docker相关文件存放在:/var/lib/docker目录下
1 | /var/lib/docker/aufs/diff # 每层与其父层之间的文件差异 |
在建立镜像时,每次写操作,都被视作一种增量操作,即在原有的数据层上添加一个新层;所以一个镜像会有若干个层组成。每次commit提交就会对产生一个ID,就相当于在上一层有加了一层,可以通过这个ID对镜像回滚。
镜像管理命令
列举一些常用的Docker镜像管理命令,完整内容请参考官方文档
Docker search 命令
docker search : 从Docker Hub查找镜像
语法:
1 | docker search [OPTIONS] TERM |
OPTIONS说明:
–automated :只列出 automated build类型的镜像;
–no-trunc :显示完整的镜像描述;
-s : 列出star数不小于指定值的镜像。
实例
从Docker Hub 查找所有镜像包含MySQL, 并且star大于100
1 | seven@seven:~$ sudo docker search mysql -s 100 |
Docker pull 命令
docker pull : 从镜像仓库中拉取或者更新指定镜像
语法:
1 | docker pull [OPTIONS] NAME[:TAG|@DIGEST] |
OPTIONS说明:
-a :拉取所有 tagged 镜像
–disable-content-trust :忽略镜像的校验,默认开启
实例:
从Docker Hub下载mysql。
1 | seven@seven:~$ sudo docker pull mysql |
Docker push 命令
docker push : 将本地的镜像上传到镜像仓库,要先登陆到镜像仓库
语法:
1 | docker push [OPTIONS] NAME[:TAG] |
OPTIONS说明:
–disable-content-trust :忽略镜像的校验,默认开启
Docker images 命令
Docker images: 查看本机的镜像
语法:
1 | docker images [OPTIONS] [REPOSITORY[:TAG]] |
OPTIONS说明:
-a :列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层);
–digests :显示镜像的摘要信息;
-f :显示满足条件的镜像;
–format :指定返回值的模板文件;
–no-trunc :显示完整的镜像信息;
-q :只显示镜像ID。
实例:
查看本地镜像列表
1 | seven@seven:~$ sudo docker images |
Docker rmi 命令
docker rmi: 删除本地一个或多少镜像。
语法:
1 | docker rmi [OPTIONS] IMAGE [IMAGE...] |
OPTIONS说明:
-f :强制删除;
–no-prune :不移除该镜像的过程镜像,默认移除;
Docker export 命令
docker export :将文件系统作为一个tar归档文件导出到STDOUT。
语法
1 | docker export [OPTIONS] CONTAINER |
OPTIONS说明:
-o :将输入内容写到文件。
Docker import 命令
docker import : 从归档文件中创建镜像。
语法
1 | docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]] |
OPTIONS说明:
-c :应用docker 指令创建镜像;
-m :提交时的说明文字;
Docker save 命令
docker save : 将指定镜像保存成 tar 归档文件。
语法
1 | docker save [OPTIONS] IMAGE [IMAGE...] |
OPTIONS说明:
-o :输出到的文件。
Docker load命令
docker load:从归档文件中导入镜像。
语法:
1 | docker load [OPTIONS] |
Options:
-i: 从tar存档文件读取的输入字符串,而不是STDIN
-q: Suppress the load output
转载请注明:Seven的博客