docker镜像管理
本文基于马哥的docker和k8s视频总结, 在此致谢马哥.
-
docker镜像会存储在专门的镜像存储空间中, 有特殊的文件系统, 存储驱动:
verlay2
docker info | grep Storage Storage Driver: overlay2
可用标签
tags
识别镜像
docker镜像.png
- 删除容器时, 容器自有的可写层也会被删除
aufs
- 早期时centos内核中不支持aufs
aufs.png
docker register
docker register分类.png
- 一般来讲需要二次定制镜像
register.png
docker register.png
镜像操作
镜像操作.png
namespace.png
基于容器制作镜像并打标签, 推送至dockerhub或阿里云镜像服务器
基于容器制作镜像.png
docker container run --name b1 -it busybox [/bin/sh]
/ # ls /
/ # mkdir -p /data/html
/ # vi /data/html/index.html
<h1>busybox httpd server.</h1>
# 此时不能关闭镜像, 然后给正在运行的容器制作镜像
docker container commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
docker container commit -p b1
-a, --author string Author (e.g., "John Hannibal Smith <hannibal@a-team.com>")
-p, --pause Pause container during commit (default true)
-c, --change list Apply Dockerfile instruction to the created image
# 修改原有基础镜像要使用的命令
# 给刚制作的镜像打标签, 可以给同一个镜像打多个标签
docker tag IMAGE_ID TARGET_IMAGE[:TAG]
docker tag 442c73e7ad1d tianjunchang/learkdocker:v1.0
docker image ls
# 再次给镜像打标签, 同时指定镜像作者和启动时运行的命令
docker commit -a "Alex Ti <1054083247@qq.com>" \
-c 'CMD ["/bin/httpd","-f","-h","/data/html/"]' \
-p b1 tianjunchang/learkdocker:v0.2
# 可以推送新建的镜像到dockerhub
# 先登录dockerhub:
docker login -u tianjunchang # 根据提示输入密码
# 然后推送镜像, 特别注意: 推送的镜像的本地标签一定要与远程仓库的名称一致才能推送成功!
docker push tianjunchang/learkdocker[:tag] # 不加标签时会推送本地整个repository的内容
使用阿里云容器镜像服务推送本地镜像
# 需在阿里云容器镜像服务的网站上自行注册账号, 创建一个repository, 然后根据提示操作:
# 0. 登录阿里云容器镜像服务, 具体的地址等可以在阿里云操作指南中查到
sudo docker login --username=yourname registry.cn-hangzhou.aliyuncs.com
# 1. 修改标签:
docker tag tianjunchang/learndocker:v0.1 \
registry.cn-hangzhou.aliyuncs.com/tianjunchang/learndocker:v0.1
# 阿里云推送本地的镜像文件时改标签为这种类型格式的标签才能推送成功!
# 2. 推送镜像:
docker push registry.cn-hangzhou.aliyuncs.com/tianjunchang/learndocker:v0.1
镜像的导入和导出
镜像的导入和导出.png
docker image save --help
Usage: docker image save [OPTIONS] IMAGE [IMAGE...]
Save one or more images to a tar archive (streamed to STDOUT by default)
Options:
-o, --output string Write to a file, instead of STDOUT
docker image save -o myimages.gz docker \
tianjunchang/learndocker:v0.1 \
registry.cn-hangzhou.aliyuncs.com/tianjunchang/learndocker:v0.1
# 可同时导出多个镜像
# -o: 指定导出的镜像文件名称, 此例为myimages.gz
# 然后可把导出的镜像文件交给需要使用的人, 在docker环境下加载:
docker load -i myimages.gz # docker会运行镜像文件中的容器
# 验证:
docker image ls