Docker镜像管理基础

docker镜像获取

基本格式

docker pull ${镜像站点}[:port站点端口,默认443]/[${名称空间}/]${镜像名称}:${镜像版本}

其中:

  1. 名称空间可能是某种机构组织或者角色,他们不属于顶层,docker hub中每个用户就是一个名称空间
  2. 如果该镜像站点只属于单一用户,名称空间可省略

20191208_103435_90

docker pull quay.io/coreos/flannel

等同于

docker pull quay.io/coreos/flannel:latest

镜像相关操作

镜像的生成途径

20191208_103549_83

基于容器制作镜像

20191208_103647_49

举例子:busybox最小镜像二次制作

docker run --name b1 -it busybox /bin/sh

配置http服务

mkdir -p /data/html

cat << EOF > /data/html/index.html
<h1>Busybox httpd server.</h1>
EOF

当前修改了容器中的内容,如果删除容器,该内容不会保存。镜像的本质就是要保存自己需要的内容。

不能关闭容器,使用commit制作镜像

20191208_104221_39

docker commit -p b1

20191208_104643_79

20191208_110245_33

运行镜像查看文件是否存在

仓库和tag都为空,如何给镜像打标签?

20191208_104721_27

docker tag 38baa mageedu/httpd:v0.1-1

20191208_105253_29

docker tag mageedu/httpd:v0.1-1 mageedu/httpd:latest

同一个镜像ID可以多个仓库名:标签名,相当于硬链接,删除一个镜像不会真实删除镜像,因为还有其他仓库名:标签名引用这个镜像ID,所以镜像ID才是唯一标识一个镜像

20191208_105346_22

docker image rm mageedu/httpd:v0.1-1

20191208_105556_69

docker inspect busybox

20191208_105948_38

20191208_110112_14

20191208_110348_79

前台运行httpd服务

httpd -f -h /data/html/

20191208_110717_68

docker commit -a "MageEdu<mage@magedu.com>" \
              -c 'CMD ["/bin/httpd","-f","-h","/data/html"]' \
              -p b1        mageedu/httpd:v0.2

20191208_110926_95

运行测试

20191208_111042_97

20191208_111130_42

20191208_111147_94

创建过程与github仓库创建流程一致,先创建仓库,然后本地推送,本地也是需要指定远端仓库地址

20191208_111253_30

20191208_111307_57

20191208_111428_19

  1. 可以指定仓库和标签,也可以省略标签,相当于推送仓库所有标签
  2. 推送之前需要登录,权限足够,不然随便一个人随便推送到一个名称空间,起不很乱
docker push mageedu/httpd

20191208_111704_88

docker login
  1. 默认是docker hub,可以不指定镜像站点
  2. 如果非docker hub,则必须指明server端

20191208_111611_42

查看推送结果

20191208_111713_52

20191208_111728_27

20191208_111915_55

20191208_111819_61

20191208_111949_39

推送镜像到阿里云

20191208_111830_91

20191208_113601_32

20191208_114113_42

20191208_114133_79

20191208_114156_76

20191208_114226_28

镜像的导入和导出

20191208_115752_87

支持多镜像打包

docker save -o myimages.gz mageedu/http:v0.1-1 mageedu/httpd:v0.2

20191208_115837_97

文件传输到其他机器加载即可使用

20191208_115930_25

docker load -i myimages.gz

20191208_115946_90

20191208_120057_93