5.2-搭建docker本地私有registry
1. 实验环境2.无认证,无代理的本地私有registry 的搭建3.有认证无代理的私有本地registry的搭建4.总结 搭建docker 本地私有registry 可以有多种搭建方法:1.无认证、无代理2. 有认证、无代理3.有认证有代理的,本篇文档目前只介绍前两种,因为现在为了尽快完成部署k8s只实践了前两种。1. 实验环境:· 两台cen...
1. 实验环境
2.无认证,无代理的本地私有registry 的搭建
3.有认证无代理的私有本地registry的搭建
4.总结
搭建docker 本地私有registry 可以有多种搭建方法:1.无认证、无代理2. 有认证、无代理3.有认证有代理的,本篇文档目前只介绍前两种,因为现在为了尽快完成部署k8s只实践了前两种。
1. 实验环境:
· 两台centos7的云主机:IP 为192.168.1.X,一台作为registry,另外一台用来测试。
2. 无认证,无代理的本地私有registry 的搭建
a. 安装docker
#yum install -y docker
验证:
# docker version
Client:
Version: 1.12.6
API version: 1.24
Package version: docker-1.12.6-68.gitec8512b.el7.centos.x86_64
Go version: go1.8.3
Git commit: ec8512b/1.12.6
Built: Mon Dec 11 16:08:42 2017
OS/Arch: linux/amd64
Server:
Version: 1.12.6
API version: 1.24
Package version: docker-1.12.6-68.gitec8512b.el7.centos.x86_64
Go version: go1.8.3
Git commit: ec8512b/1.12.6
Built: Mon Dec 11 16:08:42 2017
OS/Arch: linux/amd64
b. pull registry 镜像
# docker pull registry:2
验证:
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/registry 2 d1fd7d86a825 2 weeks ago 33.26 MB
c. 创建registry 容器
在registry:2创建的私有仓库中,上传的镜像保存在容器的/var/lib/registry目录下。创建registry:2的容器时,会自动创建一个数据卷(Data Volumes),数据卷对应的宿主机下的目录一般为:/var/lib/docker/volumes/XXX/_data。 可以在创建registry:2的容器时,通过-v参数,修改这种对应关系:
#docker run -d -p 5000:5000 --restart=always –v /opt/docker/registry/data:/var/lib/registry --name docker-registry registry:2
验证:
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5206ad2d0999 registry:2 "/entrypoint.sh /etc/" 37 hours ago Up 21 hours 0.0.0.0:5000->5000/tcp docker-registry
d. 配置客户端(测试机)
经过以上步骤之后,在测试机上对registry 的访问还会出错,对测试机进行一定的配置。在测试机的/etc/docker 目录中创建daemon.json文件(如果不存在)并编辑其内容如下:
# cat daemon.json
{"insecure-registries":["192.168.1.x:5000"]}
其中192.168.1.x 为测试机的IP,5000为端口
修改/usr/lib/systemd/system/docker.service.d/docker.conf文件,编辑内容如下:
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd
重启docker:
#systemctl restart docker
验证对reigistry 的访问:
#docker pull 192.168.1.6:5000/hello-world
Using default tag: latest
Trying to pull repository 192.168.1.6:5000/hello-world ...
sha256:8072a54ebb3bc136150e2f2860f00a7bf45f13eeb917cca2430fcd0054c8e51b: Pulling from 192.168.1.6:5000/hello-world
Digest: sha256:8072a54ebb3bc136150e2f2860f00a7bf45f13eeb917cca2430fcd0054c8e51b
Status: Downloaded newer image for 192.168.1.6:5000/hello-world:lates
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.1.6:5000/hello-world latest f2a91732366c 9 weeks ago 1.848 kB
以上结果表明测试机已经可以访问本地私有的registry,从registry中pull下了 192.168.1.6:5000/hello-world镜像(这里的 192.168.1.6:5000/hello-world是我之前传上去,所以实践者这步可能pull 不下来,这时可以从官方“docker pullhello-world” 并“docker taghello-world 192.168.1.6:5000/hello-world” 之后再”docker push 192.168.1.6:5000/hello-world“到registry,其实可以push上去就表明已经可以用了)。到这里无认证,无代理的本地私有registry 已经可以用了。下面是有认证的registry。
3. 有认证无代理的私有本地registry的搭建
a. 两个主机上都安装docker
b. 证书
使用TLS认证registry容器时,必须有证书。一般情况下,是要去认证机构购买签名证书。这里使用openssl生成自签名的证书。
b.1生成自签名证书
一般情况下,证书只支持域名访问,要使其支持IP地址访问,需要修改配置文件openssl.cnf。 在Centos7系统中,文件所在位置是要部署registry的主机上的/etc/pki/tls/openssl.cnf。在其中的[ v3_ca]部分,添加subjectAltName选项:
[v3_ca]
subjectAltName = IP:192.168.1.X
其中IP为要部署registry 的主机的IP。
接下来生成自签名的证书:
#mkdir -p /opt/docker/registry/certs
#openssl req -x509 -days 3650 -nodes -newkey rsa:2048 \
-keyout /opt/docker/registry/certs/domain.key \
-out /opt/docker/registry/certs/domain.crt
Country Name (2 letter code) [XX]:
State or Province Name (full name) []:
Locality Name (eg, city) [Default City]:
Organization Name (eg, company) [Default Company Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:192.168.1.X:5000
Email Address []:
其中的IP为部署registry 的主机IP和端口。后续就使用该地址访问私仓。其余项直接回车即可。
c 配置客户端主机
目前,已经搭建好了一个registry私有仓库了。但是现在还不能访问registry,还需要将证书复制到测试机(即客户端)。执行下面操作:
scp /opt/docker/registry/certs/domain.crt root@192.168.1.Y:/etc/docker/certs.d/192.168.1.104:5000/ca.crt
其中的IP 192.168.1.Y 为客户端主机的IP。到这里,有证书无代理的本地私有registry 已经创建好了。d.验证:
同无证书无代理的registry 的验证。
4. 总结
现在已经完成了有证书无代理以及无证书无代理的私有registry 的搭建。已经可以使用本地docker registry了,只需把需要的镜像从官方或者其他仓库找到,打上正确的tag ,push到自己的仓库中就可以了。后续等时间合适了再补充有代理有证书的registry 的搭建方法。
更多推荐
所有评论(0)