docker构建本地仓库后,无法登陆解决办法(CentOS/Ubuntu)

docker版本为:Server Version: 1.12.6

从dockerhub上下载最新的registry镜像。

首先、构建registry

1、下载registry镜像  

  docker pull registry:latest

2、运行registry容器   

  在运行容器之前先进行权限配置

    mkdir /home/registry/auth/

    docker run --entrypoint htpasswd registry:latest -Bbn username password>> /home/registry/auth/htpasswd

  以上的命令是创建用户名为 username 密码为 password 的配置文件

  启动容器

  docker run -d -p 5000:5000 --restart=always -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd -v /home/registry/auth/:/auth -v /home/registry/:/var/lib/registry/ registry:latest

3、登陆registry

  docker login IP:5000

  Username: username 

  Password: password
Error response from daemon: Get https://IP:5000/v1/users/: http: server gave HTTP response to HTTPS client

  此时提示错误,经过多番查找资料,有以下几种方法解决此问题

  1》在/etc/sysconfig/docker文件中添加一下配置:

    ADD_REGISTRY='--insecure-registry IP:5000'
  为了配置简单,省去安全相关的配置,这里使用--insecure-registry选项。
  修改配置文件后,一定要重启docker服务才能生效,所以执行命令:
  service docker restart

  但是,执行此命令之后docker deamon迟迟无法启动成功,而且还报错。

  所以,继续查找其他解决办法。

 

  2》配置registry地址的方法:

  对CentOS和Ubuntu都适用的配置文件是
  /etc/docker/daemon.json 
  增加:
  { "insecure-registries":["IP:5000"] }
  修改配置文件后,需要重启docker。
  # service docker restart

  再次登陆registry。

  docker login IP:5000

  Username: username 

  Password: password

  Login Succeeded

  之后对本地构建的仓库进行push和pull操作,完全正常。此方法验证无其他问题。

   此时查看docker info会发现最下方Insecure Registries:   多出一条信息

  ......

  ......

Registry: https://index.docker.io/v1/
WARNING: No swap limit support
Insecure Registries:
IP:5000
127.0.0.0/8

  

4、执行 push  和 pull 操作

  1》需要将镜像重新命名:

    docker tag registry:latest IP:5000/registry:latest

  2》执行上传命令:

    docker push IP:5000/registry:latest

    删除重新tag的镜像后,进行下载。

  3》执行下载命令:

    docker pull IP:5000/registry:latest

 

5、通过浏览器查看是否上传成功

  http://IP:5000/v2/_catalog

  会返回json串  如:{"repositories":["csphere/csphere"]}

  查看已上传的镜像的 tags

  http://IP:5000/v2/csphere/csphere/tags/list

  {"name":"csphere/csphere","tags":["0.13.0"]}

 

其他报错的解决方式一览:

报错:
sza@bogon:~$ docker push 192.168.1.115:5000/busybox:1.0 
The push refers to a repository [192.168.1.115:5000/busybox]
unable to ping registry endpoint https://192.168.1.115:5000/v0/
v2 ping attempt failed with error: Get https://192.168.1.115:5000/v2/: EOF
v1 ping attempt failed with error: Get https://192.168.1.115:5000/v1/_ping: EOF

解决办法:
修改Docker配置文件
vim /etc/default/docker
增加以下一行
DOCKER_OPTS="$DOCKER_OPTS --insecure-registry=192.168.1.115:5000"
重启Docker
sudo service docker restart

如果还出现错误的话,说明需要进行如下步骤解决:
vi /lib/systemd/system/docker.service
要加EnvironmentFile=-/etc/sysconfig/docker和编辑ExecStart=/usr/bin/docker -d $other_args -H fd://

systemctl reload

如果报错:
sza@bogon:~$ docker info
An error occurred trying to connect: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.22/info: read unix @->/var/run/docker.sock: read: connection reset by peer
解决:
vim /etc/default/docker 
在该文件中添加如下内容:
DOCKER_OPTS="-H unix:///var/run/docker.sock -H 0.0.0.0:5555" 
service docker restart

 

posted @ 2017-04-25 10:25  wozijisun  阅读(2666)  评论(0编辑  收藏  举报