docker run -d -p 5000:5000 -v /root/my_registry:/tmp/registry registry
说明:若之前没有安装registry容器则会自动下载并启动一个registry容器,创建本地的私有仓库服务。默认情况下,会将仓库创建在容器的/tmp/registry目录下,可以通过 -v 参数来将镜像文件存放在本地的指定路径上(例如,放在本地目录/root/my_registry下)。
宿主主机my_registry的目录结构
利用官方提供的registry镜像,将端口映射到主机的5000端口上,然后docker pull 镜像,报错如下:
根据报错提示解决方法:
1.自己添加证书走https
在registry前面套一层nginx代理,在nginx里自己签一组证书,把ca.crt拷贝到/etc/docker/certs.d/公网IP:5000/ca.crt就可以了,这样做的好处就是,以后有了第二套registry,你也只是把新的registry证书加入到对应的目录即可。
2.加--insecure-registry参数
在boot2docker中步骤如下:
.使用 boot2docker ssh
登陆到 boot2docker 虚拟机
.修改 /var/lib/boot2docker/profile
文件,向该文件中增加一行:EXTRA_ARGS="--insecure-registry 192.168.59.104:5000"
.退出该虚拟机并使用命令 boot2docker restart
重启 boot2docker
完成重启之后,将私有仓库服务器运行起来,再进行docker push操作即可。
说明一点,如果是内网的话需要从外网私服下载镜像,可以设置代理,方法如下:
vi /var/lib/boot2docker/profile
在新建的profile文件中填入公司代理:
export HTTP_PROXY=http://proxy.host:port
export HTTPS_PROXY=https://proxy.host:port
保存后重启docker服务:
或者sudo /etc/init.d/docker restart
sudo HTTP_PROXY=http://proxy.host:port/ docker -d
sudo HTTP_PROXY=http://用户名@密码:10.8.2.1:80/ docker -d
centos下:
编辑/etc/sysconfig/docker
查找 # INSECURE_REGISTRY='--insecure-registry',增加下面一行:
INSECURE_REGISTRY='--insecure-registry=公网ip:5000'
然后重启Dcoker服务即可 。
ubuntu下:
编辑/etc/default/docker
增加
DOCKER_OPTS="--insecure-registry 0.0.0.0/0" -------------------代表本机上的私服
然后重启Dcoker服务即可 。
在registry2版本发布后,出现的问题:
The push refers to a repository [10.8.24.54:5000/ncl_pmo/hello] (len: 1)
unable to ping registry endpoint https://10.8.24.54:5000/v0/
v2 ping attempt failed with error: Get https://10.8.24.54:5000/v2/: EOF
v1 ping attempt failed with error: Get https://10.8.24.54:5000/v1/_ping: EOF
解决步骤:
1.编辑/etc/sysconfig/docker
other_args="--insecure-registry 0.0.0.0/0"
2.重启服务,重新测试,错误依旧
3.通过#ps -aux|grep docker查看
[root@DockerDemo ~]# ps -aux|grep docker
root 3405 0.5 2.3 618760 23344 ? Ssl 01:23 0:00 /usr/bin/docker daemon -H fd://
root 3593 0.0 0.0 112656 968 pts/0 R+ 01:26 0:00 grep --color=auto docker
根据输出可以看出我们更改配置文件并没有生效
4.通过查阅资料发现解决办法如下图: