前言:在EC2 CentOS7上使用docker 搭建了一个私有仓库,在使用过程中遇到的问题进行总结:

公网IP:34.222.114.8

私网IP:10.0.1.46

问题①:

[root@ip-10-0-1-46 ~]# docker push 34.222.114.8:5000/centos:v1 

The push refers to a repository [34.222.114.8:5000/centos]

Get https://34.222.114.8:5000/v1/_ping:http:server gave HTTP response to HTTPS client

 出现这个问题的原因主要是docker从1.3.2版本开始与docker registry交互默认使用的是HTTPS,而docker harbor默认是HTTP方式,这时候使用push等命令时就会报错!

解决:

修改配置文件,添加私有仓库地址(可以配置多个)

[root@ip-10-0-1-46 ~]# vi /etc/docker/daemon.json 

{
  "insecure-registries": [ "34.222.114.8:5000" ]
}

insecure-registries:不安全的仓库地址,如果没有配置https证书,那么需要将私有仓库的地址配置到这里

重启docker,重新加载配置文件

[root@ip-10-0-1-46 ~]# systemctl restart docker;systemctl daemon-reload

 问题②:

[root@ip-10-0-1-46 ~]# docker push 34.222.114.8:5000/hello-world:v2
The push refers to a repository [34.222.114.8:5000/hello-world]
e07ee1baac5f: Retrying in 1 second 
received unexpected HTTP status: 500 Internal Server Error.

将镜像推送到私有仓库的时候,报错“received unexpected HTTP status: 500 Internal Server Error”;是由于selinux未关闭导致docker出现异常情况

解决

关闭selinux

临时关闭

[root@ip-10-0-1-46 ~]# setenforce 0

或永久关闭
[root@ip-10-0-1-46 ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

重新push

[root@ip-10-0-1-46 ~]# docker push 34.222.114.8:5000/hello-world:v2
The push refers to a repository [34.222.114.8:5000/hello-world]
e07ee1baac5f: Pushed 
v2: digest: sha256:f54a58bc1aac5ea1a25d796ae155dc228b3f0e11d046ae276b39c4bf2f13d8c4 size: 525

获取仓库中所有镜像

[root@ip-10-0-1-46 ~]# curl 34.222.114.8:5000/v2/_catalog
{"repositories":["centos","hello-world"]}

 获取仓库中指定镜像

curl  http://仓库地址/v2/镜像名称/tags/list

[root@ip-10-0-1-46 ~]# curl 34.222.114.8:5000/v2/centos/tags/list
{"name":"centos","tags":["7"]}

技术性分享,转载请注明出处!

欢迎互相交流,共同进步!

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐