docker学习笔记(二):镜像管理

152人浏览 / 0人评论

镜像的完整格式

ip:port/分类名/镜像名:tag
  • 在使用镜像时如果不写tag,这默认使用latest
  • 也不是在任何情况下都需要使用这种格式的命名格式
    • 只有与仓库有关的时候才使用,比如需要向仓库推送镜像等
    • 如果只是本机使用,与仓库无关,那么ip:port/分类号都是无关紧要的。

拉去镜像

基本命令为:

# docker pull ip:port/分类名/镜像名:tag
docker pull docker.io/mysql:latest
  • 如果不写ip:port/,则直接去docker-hub上拉去。
  • 如果不屑tag,则直接使用latest

给镜像打标签

基本命令:

# docker tag old-name new-name
docker tag docker.io/mysql mysql

打标签操作与linux中给文件做硬链接一样。 镜像只要有一个名字(tag)存在,那么镜像就是存在的。

这个地方我下个补充一下软链接和硬链接的区别:

软链接 硬链接
定义 软链接又叫符号链接,这个文件包含了另一个文件的路径名。可以是任意文件或目录,可以链接不同文件系统的文件。 硬链接就是一个文件的一个或多个文件名。把文件名和计算机文件系统使用的节点号链接起来。因此我们可以用多个文件名与同一个文件进行链接,这些文件名可以在同一目录或不同目录。
限制 软链接可对不存在的文件或目录创建软链接;可交叉文件系统; 硬链接只能对已存在的文件进行创建,不能交叉文件系统进行硬链接的创建;
创建方式 软链接可对文件或目录创建; 硬链接不能对目录进行创建,只可对文件创建;
影响 删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接被称为死链接(即 dangling link,若被指向路径文件被重新创建,死链接可恢复为正常的软链接)。 删除一个硬链接文件并不影响其他有相同 inode 号的文件。

删除镜像

基本命令:

# docker rmi ip:port/分类名/镜像名:tag
docker rmi docker.io/mysql:latest

删除命令实际上删除的是一个tag,前面说了tag相当于时硬链接,所以执行删除镜像操作只有将镜像所有tag都删除才能彻底删除镜像。

备份和还原镜像

当镜像pull下来后,并不是以一个整体存放在硬盘中的,而是被打散后随即(或有规律的)存放在某个目录下面。 具体如何存储取决于docker使用的存储驱动,当前默认使用overlay2作为存储驱动。 那么,我们想要备份镜像该如何做呢?总不能将整个overlay2文件夹全部拷贝下来吧。幸好,docker官方还是提供了相关命令:

# 备份
docker save docker.io/mysql:latest > mysql.tar

# 还原.1
docker load -i mysql.tar

# 还原.2
docker load < mysql.tar

另外还有容器的备份和还原,已经使用容器生成镜像。

overlay2

docker支持多种graphDriver,包括vfs、devicemapper、overlay、overlay2、aufs等等,其中最常用的就是aufs了,但随着linux内核3.18把overlay纳入其中,overlay的地位变得更重。 更多参看:Docker存储驱动之--overlay2

全部评论