目录
Docker镜像制作
搭建私服
将本地镜像推送到私有库
Docker镜像制作
以创建一个新ubuntu镜像,并安装vim命令示例
运行一个ubuntu镜像,发现在镜像里面无法使用vim命令,因为该ubuntu镜像只包括了其最基本的内核命令
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest ba6acccedd29 2 years ago 72.8MB
[root@localhost ~]# docker run -it ba6acccedd29 /bin/bash
root@f1e088df465f:/# vim a.txt
bash: vim: command not found
给ubuntu容器安装vim
root@f1e088df465f:/# apt-get update
root@f1e088df465f:/# apt-get -y install vim
安装完成之后就可以在容器里面使用vim编辑器进行文件的编辑了
root@f1e088df465f:/# vim a.txt
root@f1e088df465f:/#
将这个运行的容器制作成一个带有vim功能的ubuntu镜像
docker commit -m="提交的描述信息" -a="作者" 容器ID 要创建的目标镜像名:[标签名]
[root@localhost ~]# docker commit -m="add vim" -a="mgaw" f1e088df465f linux1:1.00001
sha256:6eb1515df77a8a00c6ae3ff5c541f26a50fd585a4b67d321280612cef1f852e1
查看镜像,发现比原镜像大了很多
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
linux1 1.00001 6eb1515df77a 31 seconds ago 189MB
ubuntu latest ba6acccedd29 2 years ago 72.8MB
运行自己制作的镜像
[root@localhost ~]# docker run -it 6eb1515df77a /bin/bash
root@cc4ba90ce5d4:/# vim a.txt
root@cc4ba90ce5d4:/#
发现确实带有vim功能了
搭建私服
下载镜像Docker Registry
[root@localhost ~]# docker pull registry
运行私服库Registry,相当于本地的私有Docker hub
[root@localhost ~]# docker run -d -p 5000:5000 -v /mgaw/myregistry/:/tmp/registry --privileged=true registry
18d989f67ba7cab18d1654227bfb8aa4350d19b3e2d9f912302f1b19bc7d852e
将本地镜像推送到私有库
以创建一个新ubuntu镜像,并安装ifconfig命令示例
运行一个ubuntu镜像,发现在镜像里面无法使用ifconfig命令,因为该ubuntu镜像只包括了其最基本的内核命令
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest ba6acccedd29 2 years ago 72.8MB
[root@localhost ~]# docker run -it ba6acccedd29 /bin/bash
root@32766e3fc651:/# ifconfig
bash: ifconfig: command not found
给ubuntu容器安装ifconfig
root@32766e3fc651:/# apt-get update
root@32766e3fc651:/# apt-get install net-tools
root@32766e3fc651:/# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 172.17.0.7 netmask 255.255.0.0 broadcast 172.17.255.255ether 02:42:ac:11:00:07 txqueuelen 0 (Ethernet)RX packets 9126 bytes 30122477 (30.1 MB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 7207 bytes 395192 (395.1 KB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536inet 127.0.0.1 netmask 255.0.0.0loop txqueuelen 1000 (Local Loopback)RX packets 0 bytes 0 (0.0 B)RX errors 0 dropped 0 overruns 0 frame 0TX packets 0 bytes 0 (0.0 B)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
将这个运行的容器制作成一个带有ifconfig功能的ubuntu镜像
[root@localhost ~]# docker commit -m="ifconfig" -a="mgaw" 32766e3fc651 ubuntu1:1.00002
sha256:120ca7640729ad7ca74912b3ca8f9f0dceedf7a798e39b59d122652907dd3a0e
查看镜像,发现比原镜像大了很多
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu1 1.00002 120ca7640729 47 seconds ago 122MB
ubuntu latest ba6acccedd29 2 years ago 72.8MB
使用 curl 工具验证私服库上有什么镜像
[root@localhost ~]# curl -XGET http://192.168.117.131:5000/v2/_catalog
{"repositories":[]}
目前私服库没有镜像上传过
将新镜像 ubuntu1:1.00002 修改符合私服规范的 Tag
命令格式: docker tag 镜像:Tag Host:Port/Repository:Tag
[root@localhost ~]# docker tag ubuntu1:1.00002 192.168.117.131:5000/ubuntu1:1.00002
查看修改后的镜像
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu1 1.00002 120ca7640729 5 minutes ago 122MB
192.168.117.131:5000/ubuntu1 1.00002 120ca7640729 5 minutes ago 122MB
ubuntu latest ba6acccedd29 2 years ago 72.8MB
修改 docker 配置文件使之支持 http
vim /etc/docker/daemon.json
新增如下内容
"insecure-registries": ["192.168.117.131:5000"]
最后的结果如下
重新启动docker,并保证linux防火墙没有对5000端口拦截
[root@localhost ~]# systemctl restart docker
由于重新启动了docker,需要重新启动 docker registry 容器
[root@localhost ~]# docker run -d -p 5000:5000 -v /mgaw/myregistry/:/tmp/registry --privileged=true registry
bbef35a7bd2f80525932769666c320751565f7f01bf095f30bbfe30fc219b564
推送镜像到私服
[root@localhost ~]# docker push 192.168.117.131:5000/ubuntu1:1.00002
The push refers to repository [192.168.117.131:5000/ubuntu1]
48d7d917047c: Pushed
9f54eef41275: Pushed
1.00002: digest: sha256:94872dd08e5e7d4c5921cb3581f8e01631f85a81a34e9dea83a28212ffb48593 size: 741
查看私服库上是否存在镜像
[root@localhost ~]# curl -XGET http://192.168.117.131:5000/v2/_catalog
{"repositories":["ubuntu1"]}
从私服上拉取镜像
[root@localhost ~]# docker pull 192.168.117.131:5000/ubuntu1:1.00002
1.00002: Pulling from ubuntu1
Digest: sha256:94872dd08e5e7d4c5921cb3581f8e01631f85a81a34e9dea83a28212ffb48593
Status: Image is up to date for 192.168.117.131:5000/ubuntu1:1.00002
192.168.117.131:5000/ubuntu1:1.00002
删除192.168.117.131:5000/ubuntu1镜像
[root@localhost ~]# docker rmi -f 120ca7640729
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
linux1 1.00001 6eb1515df77a 48 minutes ago 189MB
ubuntu latest ba6acccedd29 2 years ago 72.8MB
[root@localhost ~]# docker pull 192.168.117.131:5000/ubuntu1:1.00002
1.00002: Pulling from ubuntu1
7b1a6ab2e44d: Already exists
0981e371e319: Pull complete
Digest: sha256:94872dd08e5e7d4c5921cb3581f8e01631f85a81a34e9dea83a28212ffb48593
Status: Downloaded newer image for 192.168.117.131:5000/ubuntu1:1.00002
192.168.117.131:5000/ubuntu1:1.00002
再次查看镜像发现镜像成功拉取下来了
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.117.131:5000/ubuntu1 1.00002 120ca7640729 19 minutes ago 122MB
linux1 1.00001 6eb1515df77a 49 minutes ago 189MB
ubuntu latest ba6acccedd29 2 years ago 72.8MB
至此将本地镜像推送到私有库完成