docker搭建私有仓库

运行 registry 镜像

安装 Docker 后,可以通过官方提供的 registry 镜像来简单搭建一套本地私有仓库环境:
查看官方文档:https://hub.docker.com/_/registry

注意:当前机器是centos7, ip 是 192.168.245.133

$ docker run -d -p 5000:5000 --restart always --name registry registry:2

创建私有镜像

$ docker pull ubuntu
$ docker tag ubuntu localhost:5000/ubuntu
# 本机ip是192.168.245.133。为什么不用ip,后面会说
$ docker push localhost:5000/ubuntu

查看镜像

$ docker images
localhost:5000/ubuntu                latest              ba6acccedd29        11 months ago       72.8MB

查看镜像仓库中的镜像

# 列出所有镜像
$ curl http://localhost:5000/v2/_catalog
{"repositories":["ubuntu"]}

# 列出镜像的所有标签
$ curl http://localhost:5000/v2/ubuntu/tags/list
{"name":"ubuntu","tags":["latest"]}

此时我们可以在另外一台机器(192.168.124.132)来拉去下这个镜像

[root@192 ~]# docker pull 192.168.245.133:5000/ubuntu
Using default tag: latest
Error response from daemon: Get "https://192.168.245.133:5000/v2/": http: server gave HTTP response to HTTPS client

遇到上面错误,我们需要修改下 /etc/docker/daemon.json配置

{
"insecure-registries":["192.168.245.133:5000"],
"registry-mirrors": ["https://9fgss2yh.mirror.aliyuncs.com"]
}

配置 insecure-registries(不安全的注册地址), 加上需要镜像仓库地址

修改之后重启下docker

systemctl restart docker

重启之后,重新拉取就可以了

[root@192 ~]# docker pull 192.168.245.133:5000/ubuntu
Using default tag: latest
latest: Pulling from ubuntu
7b1a6ab2e44d: Already exists
Digest: sha256:7cc0576c7c0ec2384de5cbf245f41567e922aab1b075f3e8ad565f508032df17
Status: Downloaded newer image for 192.168.245.133:5000/ubuntu:latest
192.168.245.133:5000/ubuntu:latest

Q: push到本地仓库为啥使用localhost,能使用本地ip吗?

A:当然可以使用本地ip

# 当前机器ip 192.168.245.133
[root@192 ~]# docker pull 192.168.245.133:5000/ubuntu:latest
Error response from daemon: Get https://192.168.245.133:5000/v2/: http: server gave HTTP response to HTTPS client

可以发现直接push会报错,报错跟上面的报错内容一样

此时会把本机的ip地址当成不安全的ip,所以push不上去,配置下,允许本机不安全的ip注册

配置方式跟上面一样,将本机的注册地址加到insecure-registries 配置里面即可

{
"insecure-registries":["192.168.245.133:5000"],
"registry-mirrors": ["https://9fgss2yh.mirror.aliyuncs.com"]
}

然后重启docker

[root@192 ~]# docker pull 192.168.245.133:5000/ubuntu:latest
latest: Pulling from ubuntu
Digest: sha256:7cc0576c7c0ec2384de5cbf245f41567e922aab1b075f3e8ad565f508032df17
Status: Downloaded newer image for 192.168.245.133:5000/ubuntu:latest

此时就push成功了

运行 docker-registry-web 镜像

可参考:https://hub.docker.com/r/hyper/docker-registry-web

$ docker run -it -p 5001:8080 --name registry-web -d --restart always --link registry -e REGISTRY_URL=http://registry:5000/v2 -e REGISTRY_NAME=localhost:5000 hyper/docker-registry-web

然后访问5001端口:http://192.168.245.133:5001/

posted @ 2022-09-25 11:20  刘翊扬  阅读(171)  评论(0编辑  收藏  举报