6-搭建一个私有registry
docker hub 查找 registry
docker hub registry
可以看到部署很简单,只有一条命令。
docker run -d -p 5000:5000 --restart always --name registry registry:2
部署私有registry
-
找一台linux的服务器并安装好docker
-
在此服务器上部署registry
docker run -d -p 5000:5000 --restart always --name registry registry:2
查看是否成功
root@vultr:~# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 46da49c00f3d registry:2 "/entrypoint.sh /etc…" 2 hours ago Up 2 hours 0.0.0.0:5000->5000/tcp scijet-registry
-
测试本地是否能够连接服务器的ip
安装telnet
sudo yum install telnet
连通5000端口
[vagrant@10 ~]$ telnet 144.202.112.240 5000
如果出现以下内容则通过
Trying 144.202.112.240... Connected to 144.202.112.240. Escape character is '^]'.
-
推送到私有registry
[vagrant@10 hello-word]$ docker push 144.202.112.240:5000/hello-word The push refers to repository [144.202.112.240:5000/hello-word] Get https://144.202.112.240:5000/v2/: http: server gave HTTP response to HTTPS client
直接推送是会报错的,原因是docker 认为这个registry是不安全的,未认证的。
但是我们可以通过修改配置文件来解决。nano /etc/docker/daemon.json
增加此配置,含义就是声明这个仓库是可信任的
"insecure-registries": ["144.202.112.240:5000" ]
在docker的服务配置文件内增加一段配置
sudo nano /lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H fd:// # 在这一条配置下面 EnvironmentFile=-/etc/docker/daemon.json # 增加的内容
重启docker服务
sudo systemctl daemon-reload # 因为文件改变 所以重新加载守护进程 sudo service docker restart # 重启docker 服务
推送
docker push 144.202.112.240:5000/hello-word
结果
The push refers to repository [144.202.112.240:5000/hello-word] c4afafdc2fdb: Pushed latest: digest: sha256:8eb5ca719b342a746102453ec63c016f0abe92edc2a32a07b96c274b5a37bcdb size: 527
-
验证
私有的registry是没有web界面的,所以我们可以通过api来验证
api 网址
返回仓库内的镜像,查看是否刚刚提交的镜像在内。
也可以使用 curl
curl http://144.202.112.240:5000/v2/_catalog
-
拉取镜像
首先我们先把刚刚创建的镜像删除,然后从私有仓库内拉取回来
docker rmi 144.202.112.240:5000/hello-word
拉取
[vagrant@10 hello-word]$ docker pull 144.202.112.240:5000/hello-word Using default tag: latest latest: Pulling from hello-word Digest: sha256:8eb5ca719b342a746102453ec63c016f0abe92edc2a32a07b96c274b5a37bcdb Status: Downloaded newer image for 144.202.112.240:5000/hello-word:latest
查看是否成功拉取回来
[vagrant@10 hello-word]$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE 144.202.112.240:5000/hello-word latest bb6f23084c78 24 hours ago 857kB