当前位置: 首页 > 工具软件 > docker-lnp > 使用案例 >

docker - registry创建本地私有仓库

臧梓
2023-12-01

仓库镜像
Docker hub官方已提供容器镜像registry,用于搭建私有仓库

拉取镜像:
#docker pull daocloud.io/library/registry:latest

运行容器:
#docker run --restart=always -d -p 5000:5000 daocloud.io/library/registry

注:如果创建容器不成功,报错防火墙,解决方案如下
#systemctl stop firewalld
#yum install iptaqbles*
#systemctl start iptables
#iptables -F
#systemctl restart docker

#docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1f444285bed8 daocloud.io/library/registry “/entrypoint.sh /etc/” 23 seconds ago Up 21 seconds 0.0.0.0:5000->5000/tcp elegant_rosalind

连接容器查看端口状态:
# docker exec -it 1f444285bed8 /bin/sh //这里是sh 不是bash
/ # netstat -lnp //查看5000端口是否开启
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 :::5000 :: LISTEN 1/registry
Active UNIX domain sockets (only servers)
Proto RefCnt Flags Type State I-Node PID/Program name Path

在本机查看能否访问该私有仓库, 看看状态码是不是200
[root@master registry]# curl -I 127.0.0.1:5000 //参数是大写的i
HTTP/1.1 200 OK
测试:
拉取镜像busybox
#docker pull busybox
打tag
这是直接从官方拉的镜像,很慢:
#docker tag busybox 192.168.245.137:5000/busybox

下面这个Mysql是我测试的第二个镜像,从daocloud拉取的:
#docker tag daocloud.io/library/mysql 192.168.245.137:5000/daocloud.io/library/mysql
注:tag后面可以使用镜像名称也可以使用id,我这里使用的镜像名称,如果使用官方的镜像,不需要加前缀,但是daocloud.io的
得加前缀

修改请求方式为http:
默认为https,不改会报以下错误:
Get https://master.up.com:5000/v1/_ping: http: server gave HTTP response to HTTPS client

# vim /etc/docker/daemon.json
{ "insecure-registries":["192.168.245.137:5000"] }

重启docker:
#systemctl restart docker

上传镜像到私有仓库:
#docker push 192.168.245.137:5000/busybox

#docker push 192.168.245.137:5000/daocloud.io/library/mysql

查看私有仓库里的所有镜像:
注意我这里是用的是ubuntu的例子
# curl 192.168.245.130:5000/v2/_catalog
{“repositories”:[“daocloud.io/ubuntu”]}
或者:
# curl http://192.168.245.130:5000/v2/daocloud.io/ubuntu/tags/list
{“name”:“daocloud.io/ubuntu”,“tags”:[“v2”]}

 类似资料: