本地Linux搭建docker仓库

1. 部署registry

[root@sophia~]# docker pull registry

Using default tag: latest

[root@sophia installer]# docker tag registry:latest registry:v2

 

创建存放image的目录

[root@sophia installer]# mkdir /var/lib/docker/repository

运行container

docker run -d -p 5000:5000 --name registry-container --restart=always -v /var/lib/docker/repository:/var/lib/registry registry:v2

目前一般都是使用v2版本的, -v指定了宿主机上的目录用来作为docker仓库的存储位置,如果不指定的话,registry镜像重启之后会丢失已经存储在本地仓库的镜像文件。

[root@sophia installer]# docker ps | grep registry

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES

d4f51c1c6d55        registry:v2         "/entrypoint.sh /etc…"   3 seconds ago       Up 1 second         0.0.0.0:5000->5000/tcp   registry-container

 

查看registry镜像仓库,镜像仓库为空

curl -X GET http://sophia:5000/v2/_catalog

{"repositories":[]}

 

2. 上传镜像到仓库

[root@sophia product]# docker tag rancher/pause-amd64:3.1 sophia:5000/mods/modstest:1.0

[root@sophia product]# docker push sophia:5000/mods/modstest:1.0

The push refers to repository [sophia:5000/mods/modstest]

Get https://sophia:5000/v2/: Forbidden

出错是因为本地默认使用的是https进行上传,这是因为我们启动的registry服务不是安全可以信赖的,这个时候需要修改docker的配置文件/etc/docker/daemon.json,添加--insecure-registry sophia:5000,在重启docker服务

[root@sophia installer]# vi /etc/docker/daemon.json

 {

"log-driver": "json-file",

"log-opts": {

    "max-size": "10m",

    "max-file": "10"

    },

 "insecure-registries": [

    "sophia:5000"

  ]

}

重新上传

如果还是出错,比如有代理设置,并且属于公司内部服务器,出错内容为:

http://sophia:5000/v2/mods/modstest/blobs/uploads/</a></div>\n</td></tr><tr>\n<td class=\"hr\"><hr></td>\n</tr>\n<tr><td class=\"eu_co fo\">\nNeed help? Contact our support team at 5757\n</td></tr>\n<tr><td class=\"eu_co st\">\n<span class=\"s_img\"></span>\nYour organization has selected Zscaler to protect you from internet threats.

或者用IP:

[root@sophia product]# docker push sophia:5000/modstest:1.0

The push refers to repository [sophia:5000/modstest]

Get http://sophia:5000/v2/: net/http: request canceled (Client.Timeout exceeded while awaiting headers)

需要修改docker使用的proxy

查看proxy:docker system info

修改proxy,依赖于proxy设置的方式,我自己遇到的两种情况:

情况1:

如果使用了[root@sophia installer]# vi /usr/lib/systemd/system/docker.service,需要找proxy的位置把本机的IP或者hostname或者需要使用的hostname添加的noproxy

Environment="HTTP_PROXY=http://proxy.com:8080/"

Environment="HTTPS_PROXY=https://proxy.com:8080/"

Environment="NO_PROXY=docker.test.com,10.111.13.81,sophia"

情况2:

[root@sophia product]# vi /etc/systemd/system/docker.service.d/http-proxy.conf

[root@sophia product]# vi /etc/systemd/system/docker.service.d/https-proxy.conf

[Service]

Environment="HTTP_PROXY=http://proxy.com:8080" "NO_PROXY=localhost,127.0.0.1,docker.test.com,sophia,10.111.13.81"

[root@sophia product]# systemctl daemon-reload

[root@sophia product]# systemctl restart docker

3. 下载镜像

在需要下载的image的机器上如果遇到和上传时相同的问题,参考上边上传镜像遇到问题,然后就可以docker pull了

 

posted @ 2020-10-20 16:59  lily_z  阅读(580)  评论(0编辑  收藏  举报