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/