你好,游客 登录 注册 搜索
背景:
阅读新闻

部署内网Docker Registry

[日期:2017-08-09] 来源:Linux社区  作者:tryingstuff [字体: ]

目前docker 已经分为社区版 (docker CE)和 商业版(docker EE),最新的版本由原来的1.13直接跳到了17.06,目前由于17.06的刚刚发布,在使用Docker 的时候可以根据自己的需求选择相应的版本。

Docker 安装
先移除其他非官方的版本:

yum -y remove docker docker-common container-selinux
yum -y remove docker-selinux

添加yum源,这里选择1.13的版本:
yum install -y yum-utils
yum-config-manager --add-repo https://docs.docker.com/v1.13/engine/installation/linux/repo_files/CentOS/docker.repo

对yum仓库快速缓存:

yum makecache fast

安装docker:

yum -y install docker-engine-1.13.1

如果对版本有特殊要求,这里可以使用如下命令,列出可选的版本信息,然后指定版本安装:
yum list docker-engine.x86_64  --showduplicates |sort -r

在启动的配置文件中添加国内的镜像仓库:

vim /usr/lib/systemd/system/docker.service
...
ExecStart=/usr/bin/dockerd --registry-mirror https://qxx96o44.mirror.aliyuncs.com
...

启动docker:

systemctl start docker

Docker Registry

我们可以使用docker registry 作为我们的私有镜像仓库,当本地制作好镜像后,可以直接上传到镜像仓库中,方便其他主机拉取镜像。

在生产环境中,官方建议使用权威的CA证书,如果我们可以申请到公共的CA证书,就可以部署我们的共有镜像仓库。
也可以通过创建私有的证书,在需要访问仓库的主机上添加认证即可。
由于目前都是内部使用,加上服务器权限控制非常严格,所以这里直接使用免CA证书的方式(官方强烈不推荐)
修改registry配置为免CA模式,指定Registry服务器的域名或者IP地址,并指定访问端口(端口可任意,和registry容器端口映射上即可)
创建daemon.json:
vim /etc/docker/daemon.json

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

重启docker 服务:
systemctl restart docker

配置用户密码
mkdir auth

下载registry镜像,并配置账户密码:

docker run  --entrypoint htpasswd registry -Bbn trying 123123 > auth/htpasswd

这个命令会拉取registry镜像,以htpasswd的方式对密码进行加密,指定用户 trying 和密码123123,并将密码存在指定文件中。
启动容器仓库:
docker run -d -p 5000:5000 --restart=always --name registry_docker \
-v `pwd`/auth:/auth -e "REGISTRY_AUTH=htpasswd" \
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
-e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" registry:2

指定容器的映射端口,容器启动时应用自动启动,指定一个数据卷,挂载验证文件htpasswd,并指定验证信息。

使用账号登录仓库,输入账号密码:
docker login 192.168.60.18:5000

推送本地镜像到仓库:

docker tag 256ab8c63c04 192.168.60.18:5000/self-registry:v1
docker push 192.168.60.18:5000/self-registry:v1

其他主机下载镜像:
在另外一台需要获取镜像的主机上配置registry为无CA模式:
vim /etc/docker/daemon.json

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

启动docker, 登录:
docker login 192.168.60.18:5000
docker pull 192.168.60.18:5000/self-registry:v1

拉取成功:
# docker images
REPOSITORY                        TAG                IMAGE ID            CREATED            SIZE
192.168.60.18:5000/self-registry  v1                  256ab8c63c04        About an hour ago  401 MB

补充说明:

1、内网的其他主机如果需要从本地仓库拉取镜像,都需要添加daemon.json的文件。
2、在registry的容器中,我们可以看到挂载的宿主机磁盘信息:
# df -h
Filesystem                Size      Used Available Use% Mounted on
overlay                  80.0G      3.3G    76.7G  4% /
/dev/vda1                80.0G      3.3G    76.7G  4% /auth
/dev/vda1                80.0G      3.3G    76.7G  4% /etc/resolv.conf
/dev/vda1                80.0G      3.3G    76.7G  4% /etc/hostname
/dev/vda1                80.0G      3.3G    76.7G  4% /etc/hosts
/dev/vda1                80.0G      3.3G    76.7G  4% /var/lib/registry

在容器中,镜像的存放位置为/var/lib/registry/docker/registry/v2/repositories/  那么对应的宿主机目录是/var/lib/docker/image/
可以在启动registry时,挂载宿主机上指定的目录到容器的/var/lib/registry上,当容器发生故障后,可以重启一个新的,存储的镜像不会有任何影响。
这里将docker 镜像仓库映射到宿主机的 /data/images目录下:
docker run -d -p 5000:5000 --restart=always --name registry1 -v `pwd`/auth:/auth \
-v /data/images:/var/lib/registry -e "REGISTRY_AUTH=htpasswd" \
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
-e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" registry:2

3、如果我们要改变registry宿主机上的映射端口,所有的主机上的daemon.jason文件都需要修改为对应的端口,并重启docker 服务。

更多Docker相关教程见以下内容

Docker安装应用(CentOS 6.5_x64) http://www.linuxidc.com/Linux/2014-07/104595.htm

Ubuntu 16.04 服务器上配置使用 Docker  http://www.linuxidc.com/Linux/2017-06/145176.htm

Ubuntu 15.04下安装Docker  http://www.linuxidc.com/Linux/2015-07/120444.htm

Docker 安装实例 http://www.linuxidc.com/Linux/2017-04/142666.htm

Docker 创建基础镜像  http://www.linuxidc.com/Linux/2017-05/144112.htm

在 Ubuntu 15.04 上如何安装Docker及基本用法 http://www.linuxidc.com/Linux/2015-09/122885.htm

Ubuntu 16.04上Docker使用手记 http://www.linuxidc.com/Linux/2016-12/138490.htm

使用Docker分分钟启动常用应用  http://www.linuxidc.com/Linux/2017-04/142649.htm

Ubuntu 16.04下Docker修改配置文件不生效解决办法  http://www.linuxidc.com/Linux/2017-05/143862.htm 

Docker 的详细介绍请点这里
Docker 的下载地址请点这里

本文永久更新链接地址http://www.linuxidc.com/Linux/2017-08/146133.htm

linux
相关资讯       Docker Registry 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款