至于为什么搭建docker私有仓库,原因很简单,把项目放到docker公有仓库,或者是阿里云的docker仓库,是很不专业的做法,搭建私有的docker私有仓库,就类似于我们搭建git的私服,maven私服一样,就是为了屏蔽外部因素的干扰,网络不稳定,下载上传镜像就会很慢。
前提:
关闭防火墙,开放端口
# systemctl stop firewalld.service
# systemctl disable firewalld.service
关闭本地selinux防火墙
# vi /etc/sysconfig/selinux
SELINUX=disabled
# setenforce 0
①,开始
在之前的基础上,拉取register镜像
docker pull registry
②,运行
#这个是老版本
docker run -d -p 5000:5000 --privileged=true -v /opt/date/registry:/tmp/registry docker.io/registry
#这个是新版本,存储的目录不一样,目录制定不对的话,docker私服不能持久化,重启宕机将面临很严重的问题,这个浪费的两天的时间
docker run -d -p 5000:5000 --privileged=true -v /opt/date/registry:/var/lib/registry docker.io/registry
就这样我们自己的私有仓库就创建好了,很easy吧,那么,可以测试一下,将我们应用的镜像push上去,再起一个虚拟机,安装上docker之后,拉下来,看能不能运行,到这里我们才能感觉到docker的魅力
提示一句,在发现容器存储有问题的时候可以进入容器看看
docker exec -it 容器id /bin/sh
③,push我们的镜像
先做一个版本,这个很重要,在多版本的时候,容易混乱,docker提供了tag来让我们区分版本,启动容器的时候一定要用image-id
docker tag ac5a16450bc0 192.168.9.129:5000/docker:1.1
image.png
接下来直接push的话,是不成功的,因为现在docker不知道你要push到什么地方,先配置一下
vi /etc/sysconfig/docker
#添加
ADD_REGISTRY='--add-registry 192.168.9.129:5000'
INSECURE_REGISTRY='--insecure-registry 192.168.9.129:5000'
修改了环境变量,接下来就是重启了
systemctl restart docker
#启动私服容器
docker run -d -p 5000:5000 -v /opt/date/registry:/tmp/registry docker.io/registry
#再次push
docker push 192.168.9.129:5000/docker
成功push的标志
image.png
查看是否push上去了
[root@localhost ~]# curl -XGET http://192.168.9.129:5000/v2/_catalog
{"repositories":["docker"]}
http://192.168.9.129:5000/v2/docker/tags/list
④,pull私服中的镜像
在需要的地方
docker pull 192.168.9.129:5000/docker:1.1
如果不带1.1,则默认latest,因为push的时候制定过了tag是1.1,所以这里必须带上1.1,如果不带默认latest
好了,看看
image.png
[root@localhost /]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.9.129:5000/docker 1.1 ac5a16450bc0 5 hours ago 656 MB
运行
[root@localhost /]# docker run -d --name docker -p 8088:8088 ac5a16450bc0
b04571e4a0e050250da1193f02ef616c3753dc97c21734142b75ba616eeadb2c
image.png
题外话
yum install telnet
yum install telnet-server
yum install xinetd
网友评论