设为首页 收藏本站
查看: 866|回复: 0

[经验分享] 部署内网Docker Registry

[复制链接]

尚未签到

发表于 2018-5-27 12:48:19 | 显示全部楼层 |阅读模式
目前docker 已经分为社区版 (docker CE)和 商业版(docker EE),最新的版本由原来的1.13直接跳到了17.06,目前由于17.06的刚刚发布,在使用Docker 的时候可以根据自己的需求选择相应的版本。


安装新版本docker (docker-ce)


以下内容根据 官方文档 修改而来。
如果你之前安装过 docker,请先删掉
sudo yum remove docker docker-common docker-selinux docker-engine安装一些依赖
sudo yum install -y yum-utils device-mapper-persistent-data lvm2  根据你的发行版下载repo文件: CentOS/RHEL Fedora


wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo把软件仓库地址替换为 TUNA:
sudo sed -i 's+download.docker.com+mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo最后安装:
sudo yum makecache fast
sudo yum install docker-ce启动docker:


systemctl start 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  查看仓库镜像:
  使用浏览器访问: http://192.168.60.18:5000/v2/_catalog ,输入之前设置的账号密码 trying/123123登录,即可查看到镜像信息
{"repositories":["self-registry"]}  补充说明:

  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 服务。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-481796-1-1.html 上篇帖子: docker讲解和命令汇总 下篇帖子: docker version 1.12+ swarm 集群
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表