2.docker镜像管理基础

。_饼干妹妹 提交于 2020-03-01 03:04:42

docker 码头工人,镜像集装箱

启动容器时,docker daemon会试图从本地获取相关的镜像,本地镜像不存在时,其将从Registry中下载该镜像并保存到本地

Registry分类

  1. Sponsor Registry  第三方的Registry,供客户和社区使用
  2. Mirror Registry       第三方的Registry,只让客户使用
  3. Vendor Registry            由发布Docker镜像的供应商提供的Registry
  4. Private Registry   通过设有防火墙和额外的安全层的私有实体提供Registr

每个仓库可以包含多个的Tag,每个标签对应一个镜像,Docker Registry中的镜像通常由开发人员制作,而后推送至‘公共’或‘私有’Registry上保存,供其他人使用。

带服务器地址下载镜像

docker pull quay.io/coreos/flannel:v0.10.0-amd64

镜像制作

  1. Dockerfile

  2. 基于容器制作镜像。

本节主要针对基于容器制作

1.启动一个容器

[root@zanghao01 ~]# docker run --name b1 -it busybox
/ # ls /
bin   dev   etc   home  proc  root  sys   tmp   usr   var
/ # mkdir -p /data/html
/ # vim /data/html/index.html
sh: vim: not found
/ # vi /data/html/index.html   #####<h1>Busybox httpd server.</h1>

2.重新开个客户端,保存 刚刚的容器更改docker commit -p b1

[root@zanghao01 ~]# docker commit -p b1
sha256:f832307f826307dc5390a5912a4e465650a948c783372bb126c7bf119788b92d
[root@zanghao01 ~]# docker image ls
REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
<none>                   <none>              f832307f8263        9 seconds ago       1.22MB
nginx                    latest              a1523e859360        2 days ago          127MB
busybox                  latest              6d5fcfe5ff17        2 months ago        1.22MB
centos                   latest              0f3e07c0138f        5 months ago        220MB
mycentos                 latest              0f3e07c0138f        5 months ago        220MB
quay.io/coreos/flannel   v0.10.0-amd64       f0fad859c909        2 years ago         44.6MB
[root@zanghao01 ~]# docker tag f832307f8263 zanghao/httpd:v0.1-1
[root@zanghao01 ~]# docker image ls
REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
zanghao/httpd            v0.1-1              f832307f8263        2 minutes ago       1.22MB
nginx                    latest              a1523e859360        2 days ago          127MB
busybox                  latest              6d5fcfe5ff17        2 months ago        1.22MB
centos                   latest              0f3e07c0138f        5 months ago        220MB
mycentos                 latest              0f3e07c0138f        5 months ago        220MB
quay.io/coreos/flannel   v0.10.0-amd64       f0fad859c909        2 years ago         44.6MB

3.制作出一个新的镜像,使用TAG标签

[root@zanghao01 ~]# docker tag zanghao/httpd:v0.1-1 zanghao/httpd:latest
[root@zanghao01 ~]# docker image ls
REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
zanghao/httpd            latest              f832307f8263        7 minutes ago       1.22MB
zanghao/httpd            v0.1-1              f832307f8263        7 minutes ago       1.22MB
nginx                    latest              a1523e859360        2 days ago          127MB
busybox                  latest              6d5fcfe5ff17        2 months ago        1.22MB
mycentos                 latest              0f3e07c0138f        5 months ago        220MB
centos                   latest              0f3e07c0138f        5 months ago        220MB
quay.io/coreos/flannel   v0.10.0-amd64       f0fad859c909        2 years ago         44.6MB

4.启动新建的镜像,可以查看到更改的变化

[root@zanghao01 ~]# docker run --name t1 -it zanghao/httpd:v0.1-1
/ # ls /
bin   data  dev   etc   home  proc  root  sys   tmp   usr   var
/ # cd data
/data # ll
sh: ll: not found
/data # ls
html
/data # cat html
cat: read error: Is a directory
/data # cd html
/data/html # ls
index.html
/data/html # cat index.html
<h1>Busybox httpd server.</h1>

镜像分享

1.将镜像push到仓库(例如Dcoker Hub)

首先前提是有Dcoker Hub账号(docker login -u 用户名),然后docker push命令进行推送

2.镜像的导入和导出

将镜像文件打包

[root@zanghao01 ~]# docker save -o myimages.gz zanghao/httpd:v0.1-1 nginx:latest
[root@zanghao01 ~]# ls
-                dead.letter  EOF                    index.html?serve       myimages.gz     testdelete1.py  zanghao
anaconda-ks.cfg  dump.rdb     etc_2018-11-03.tar.gz  mariadb-10.3.7.tar.gz  plush_color.sh  testdelete.py

虚拟机root2安装docker

[root@zanghao02 yum.repos.d]# yum stall docker-ce

将roo1的文件myimages.gz复制到root

[root@zanghao01 ~]# scp myimages.gz root@192.168.121.128:~
root@192.168.121.128's password: 
myimages.gz   

在root2上加载导入的镜像 docker load -i myimages.gz

[root@zanghao02 ~]# docker load -i myimages.gz
195be5f8be1d: Loading layer [==================================================>]  1.437MB/1.437MB
abfb1a19084a: Loading layer [==================================================>]  4.608kB/4.608kB
Loaded image: zanghao/httpd:v0.1-1
f2cb0ecef392: Loading layer [==================================================>]  72.48MB/72.48MB
fe08d5d042ab: Loading layer [==================================================>]  58.04MB/58.04MB
318be7aea8fc: Loading layer [==================================================>]  3.584kB/3.584kB
Loaded image: nginx:latest
[root@zanghao02 ~]# docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
zanghao/httpd       v0.1-1              f832307f8263        About an hour ago   1.22MB
nginx               latest              a1523e859360        2 days ago          127MB


 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!