linux安装镜像仓库,docker-5-搭建docker本地镜像仓库

拉官方的镜像比较慢,save或export的文件需要传来传去,搭建一个私人仓库就啥问题都没有了。

前提:安装好了docker-ce并能够正常使用

注意:本文中的client是我的hostname,请自行调整

搭建docker本地镜像仓库

先获取并运行docker官方的repository镜像

docker run -d -p 5000:5000 --restart always --name registry registry:2

--restart选项是在docker-ce启动时会自动启动,always是级别,stop掉了会不自动重启。

修改daemon.json文件(如果没有就创建)

vim /etc/docker/daemon.json

{

"insecure-registries": [

"repository:5000"

]

}

repository是主机名,可以使用ip,5000是运行registry时指定的端口,可以指定多个本地仓库,用,间隔

重启docker

systemctl restart docker

查看本地镜像

f6a2bd5724157eb8f068f32de9a64cd8.png

给本地镜像打标签

docker tag centos repository:5000/centos

repository:5000是本地仓库的地址

将本地镜像上传到本地镜像仓库

docker push repository:5000/centos

查看本地镜像仓库中镜像

curl -4 http://localhost:5000/v2/_catalog

70912d656117943b3d4e0c86a82e955e.png

获取镜像

docker pull repository:5000/centos

SSL所有仓库搭建

准备ssl证书,放哪都可以,只要你记得住

mkdir -p /data/registry

cd /data/registry

openssl req -newkey rsa:4096 -nodes -sha256 -keyout ${HOSTNAME}.key -x509 -days 365 -out ${HOSTNAME}.crt

一路回车即可,会生成两个文件

3774e4d711356edaa8807a322ca7c96d.png

准备docker-compose.yml文件(注意修改下面的${HOSTNAME},不要用变量)version: '3'

services:

registry:

image: registry:2.6.1

hostname: registry

deploy:

restart_policy:

condition: on-failure

ports:

- 443:5000/tcp

networks:

registry:

aliases:

- registry

volumes:

- /var/lib/registry:/var/lib/registry:rw

- /data/registry:/certs

environment:

- REGISTRY_HTTP_TLS_KEY=/certs/${HOSTNAME}.key

- REGISTRY_HTTP_TLS_CERTIFICATE=/certs/${HOSTNAME}.crt

networks:

registry:

external: true

启动registry容器

docker-compose -p my up -d

这里可能会报错,要你手动创建网络,如果有了就不用管

3543ee6f0eaa1ee8381512825d27fe4e.png

docker network create registry

注:如果docker-compose之后镜像创建了,但是起不来,请用docker logs 查看日志,解决错误

连接测试

[root@client registry]# curl -k https://127.0.0.1/v2/_catalog

{"repositories":[]}

配置客户端:

mkdir -p /etc/docker/certs.d/client

cp /data/registry/client.crt /etc/docker/certs.d/client/

systemctl restart docker

因为没有设置自动启动,需要手动启动

docker start my_registry_1

查看状态

b118ed2d51067ec0cf4bb66f10323e57.png

用其他机器连接测试

65264cde4b3b178ba04134b0215b270a.png

上传镜像

docker tag centos:latest client:443/centos:latest

docker push client:443/centos:latest

报错

denied: requested access to the resource is denied

上传被拒绝

排查:

一、/etc/docker/daemon.json文件中是否指定私有仓库,指定的hostname和端口是否正确

"insecure-registries": [

"client:443"

]

二、私有仓库是否启动,防火墙是否开放其端口

三、daemon.json文件修改后是否生效(重启docker即可)

systemctl restart docker

四、上传的镜像名称是否正确(格式   hostname:port/image:version)

certificate is not valid for any names, but wanted to match repository

证书无效

解决方法:重启docker,重启repository容器

[参考:[官方文档](https://docs.docker.com/samples/library/registry/)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值