镜像管理
镜像结构和原理
镜像里面是一层层的文件系统,叫做 Union FS(联合文件系统)
可以将几层目录挂载到一起形成一个虚拟文件系统,虚拟文件系统的目录结构
就像普通 linux 的目录结构一样,镜像通过这些文件再加上宿主机的内核共同提供了一个 linux 的虚拟环境,每一层文件系统叫做一层 layer
构建镜像的时候,从一个最基本的操作系统开始,每个构建提交的操作都相当于做一层的修改,增加了 一层文件系统,一层层往上叠加,上层的修改会覆盖底层该位置的可见性,当使用镜像的时候,我们只会看到一个完全的整体,不知道里面有几层,实际上也不 需要知道里面有几层
在docker pull 时加上版本,和生产环境保持一致
镜像查看
#docker image ls
#执行结果的显示信息说明:
REPOSITORY #镜像所属的仓库名称
TAG #镜像版本号(标识符),默认为lates
IMAGE ID #镜像唯一ID标识,如果ID相同,说明是同一个镜像有多个名称
CREATED #镜像在仓库中被创建时间
VIRTUAL SIZE #镜像的大小
查看指定镜像的详细信息
#docker inspect alpine:3.16.2
镜像删除
不能删除正在使用的镜像
docker rmi [OPTIONS] IMAGE [IMAGE...]
镜像导出
利用docker save命令可以将从本地镜像导出为一个打包 tar文件,然后复制到其他服务器进行导入使用
docker save [OPTIONS] IMAGE [IMAGE...]
-o 创建文件而非输出
image填名称repository加版本号tag
#导出为tar格式
docker save -o /path/file.tar IMAGE1 IMAGE2 ...
docker save -o /root/nginx.tar nginx:latest
docker save IMAGE1 IMAGE2 ... > /path/file.tar
#导出为压缩格式
docker save IMAGE1 IMAGE2 ... | gzip > /path/file.tar.gz
#将所有镜像导入到一个文件中
#docker image save `docker image ls --format "{{.Repository}}:{{.Tag}}"` -o all.tar
#docker image save `docker image ls --format "{{.Repository}}:{{.Tag}}"` | gzip > all.tar.gz
#`docker image ls --format "{{.Repository}}:{{.Tag}}"`会输出repo和tag的列表
镜像导入
利用docker load命令可以将镜像导出的打包或压缩文件再导入
镜像导入只能支持单个镜像导入,不支持多个镜像导入
补充:
| 用于将一个命令的输出作为另一个命令的输入
> 用于将命令的输出重定向到一个文件中
docker load [OPTIONS] [tar包路径]
#选项
-i, --input string Read from tar archive file, instead of STDIN
-q, --quiet Suppress the load output
#将所有镜像导入到一个文件中,此方法导入后可以看REPOSITORY和TAG
#docker image save `docker image ls --format "{{.Repository}}:{{.Tag}}"` -o all.tar
#scp all.tar 10.0.0.100:/data
#docker load -i /data/all.tar
#docker images
删除dangling状态的镜像
#docker rmi -f `docker images -q -f dangling=true`
#docker image prune -a -f
镜像打标签
#docker tag alpine alpine:3.11
2978

被折叠的 条评论
为什么被折叠?



