docker-5-搭建docker本地镜像仓库
2018-01-07 10:26
791 查看
拉官方的镜像比较慢,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
查看本地镜像
给本地镜像打标签
docker tag centos repository:5000/centos
repository:5000是本地仓库的地址
将本地镜像上传到本地镜像仓库
docker push repository:5000/centos
查看本地镜像仓库中镜像
curl -4 http://localhost:5000/v2/_catalog
获取镜像
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
一路回车即可,会生成两个文件
准备docker-compose.yml文件(注意修改下面的${HOSTNAME},不要用变量)
启动registry容器
docker-compose -p my up -d
这里可能会报错,要你手动创建网络,如果有了就不用管
docker network create registry
注:如果docker-compose之后镜像创建了,但是起不来,请用docker logs <images>查看日志,解决错误
连接测试
[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
查看状态
用其他机器连接测试
上传镜像
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/)
布小沫Docker入门级简易手册:https://github.com/buxiaomo/MarkdownBooks
前提:安装好了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
查看本地镜像
给本地镜像打标签
docker tag centos repository:5000/centos
repository:5000是本地仓库的地址
将本地镜像上传到本地镜像仓库
docker push repository:5000/centos
查看本地镜像仓库中镜像
curl -4 http://localhost:5000/v2/_catalog
获取镜像
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
一路回车即可,会生成两个文件
准备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
这里可能会报错,要你手动创建网络,如果有了就不用管
docker network create registry
注:如果docker-compose之后镜像创建了,但是起不来,请用docker logs <images>查看日志,解决错误
连接测试
[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
查看状态
用其他机器连接测试
上传镜像
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/)
布小沫Docker入门级简易手册:https://github.com/buxiaomo/MarkdownBooks
相关文章推荐
- docker搭建本地镜像仓库
- docker本地镜像仓库搭建
- Docker应用--搭建Docker镜像的本地仓库
- centos7系统下搭建docker本地镜像仓库
- 搭建docker本地镜像仓库
- centos7系统下搭建docker本地镜像仓库的方法
- centos7系统下搭建docker本地镜像仓库
- Docker集群实验环境布署--swarm【2 搭建本地镜像仓库】
- docker本地镜像仓库harbor
- 使用Harbor搭建Docker私有镜像仓库服务
- docker本地仓库搭建
- 同步阿里云镜像到本地,在本地搭建YUM仓库 【转】
- 【Docker】创建私有仓库, 查看私有仓库镜像, 方便本地共享
- 3.搭建docker私有仓库,并上传下载镜像
- Docker搭建私有镜像仓库的方法
- docker 搭建本地私有仓库 (v2)
- Docker镜像仓库Harbor之搭建及配置
- 在CentOS 7.2上搭建Docker私有镜像仓库
- 使用官方 docker registry 搭建私有镜像仓库及部署 web ui
- 基于 Harbor 搭建 Docker 私有镜像仓库