docker 码头工人,镜像集装箱
启动容器时,docker daemon会试图从本地获取相关的镜像,本地镜像不存在时,其将从Registry中下载该镜像并保存到本地
Registry分类
- Sponsor Registry 第三方的Registry,供客户和社区使用
- Mirror Registry 第三方的Registry,只让客户使用
- Vendor Registry 由发布Docker镜像的供应商提供的Registry
- Private Registry 通过设有防火墙和额外的安全层的私有实体提供Registr
每个仓库可以包含多个的Tag,每个标签对应一个镜像,Docker Registry中的镜像通常由开发人员制作,而后推送至‘公共’或‘私有’Registry上保存,供其他人使用。
带服务器地址下载镜像
docker pull quay.io/coreos/flannel:v0.10.0-amd64
镜像制作
-
Dockerfile
-
基于容器制作镜像。
本节主要针对基于容器制作
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