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

[经验分享] Docker创建本地仓库

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-12-31 08:22:17 | 显示全部楼层 |阅读模式
Docker是时下相当火热的技术,关于docker的介绍此处就不多说,本文主要介绍下如何在centos6.6环境下配置docker的本地仓库,对于想在局域网内大规模运用docker来说,频繁的从官网仓库下载镜像文件,无论从管理还是在效率上都无法接受。


一:以容器的方式运行registry服务
初次运行,本地不存在registry的image,会自动从官方网站上下载一份,速度较慢
1
# docker run -idt -p 5000:5000 --name registry -v /data/registry:/tmp/registry registry



wKiom1SibgCgp4azAAYhhlHqlhE921.jpg
二:配置Nginx, 需要配置用户验证和https支持
# /usr/local/nginx/sbin/nginx -V
wKiom1SibqHjb9VXAAQEarZ5ark196.jpg
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# cat /usr/local/nginx/conf/extra/docker.conf
# For versions of Nginx > 1.3.9 that include chunked transfer encoding support
# Replace with appropriate values where necessary

upstream docker-registry {
server 127.0.0.1:5000;
}

server {
listen  443;
server_name  registry.fjhb.cn;  
ssl on;
ssl_certificate     /etc/ssl/certs/nginx.crt;
ssl_certificate_key /etc/ssl/private/nginx.key;
proxy_set_header Host       $http_host;   # required for Docker client sake
proxy_set_header X-Real-IP  $remote_addr; # pass on real client IP
client_max_body_size 0; # disable any limits to avoid HTTP 413 for large image uploads
# required to avoid HTTP 411: see Issue #1486 (https://github.com/dotcloud/docker/issues/1486)
chunked_transfer_encoding on;

location / {
     # let Nginx know about our auth file
     auth_basic              "Restricted";
     auth_basic_user_file    docker-registry.htpasswd;

     proxy_pass http://docker-registry;
}
location /_ping {
     auth_basic off;
     proxy_pass http://docker-registry;
}  
location /v1/_ping {
     auth_basic off;
     proxy_pass http://docker-registry;
}
}



三:配置ssl证书和密码文件
1:生成根密钥
1
2
3
4
# cd /etc/pki/CA/
# touch ./{serial,index.txt}
# echo "00" > serial
# openssl  genrsa -out private/cakey.pem 2048



2:生成根证书
1
# openssl  req -new -x509 -key private/cakey.pem -days 3650 -out cacert.pem



wKiom1SibxuytRkdAAW6hQK0d9I207.jpg
3:生成nginx的key和nginx.csr证书请求文件
1
2
3
# cd /etc/ssl/
# openssl genrsa -out nginx.key 2048
# openssl  req -new -key nginx.key -out nginx.csr



wKiom1Sib0OxlfMZAAidSOMp6WU745.jpg
4:私有CA根据请求来签发证书
1
# openssl ca -in nginx.csr -days 3650 -out nginx.crt



wKiom1Sib3SC5tyMAAfGjOrcG-I265.jpg
1
2
# cp /etc/pki/tls/certs/ca-bundle.crt{,.bak}
# cat /etc/pki/CA/cacert.pem >> /etc/pki/tls/certs/ca-bundle.crt  #因为是自签的证书,此步骤的意义在于让系统接受该证书



5:复制生成的证书文件到相应位置
1
2
# cp nginx.crt  certs/
# cp nginx.key  private/



6:使用htpasswd工具创建密码文件
1
2
3
4
5
6
7
8
9
10
# yum -y install httpd-tools
# htpasswd -c /usr/local/nginx/conf/docker-registry.htpasswd yang
New password:
Re-type new password:
Adding password for user yang

# htpasswd /usr/local/nginx/conf/docker-registry.htpasswd lin
New password:
Re-type new password:
Adding password for user lin



四:启动nginx
1
2
3
# /usr/local/nginx/sbin/nginx  -t
# /usr/local/nginx/sbin/nginx
# netstat -ntpl |grep nginx



wKiom1Sib_nizmheAANEYqizGvU149.jpg
五:测试
1:本地测试push
1
2
3
4
# docker login -u yang -p 123 -e ylw@fjhb.cn registry.fjhb.cn
# docker images
# docker tag registry registry.fjhb.cn/registry:v2
# docker push registry.fjhb.cn/registry:v2



wKioL1SicODyG-GKAAmXqnP-06Q288.jpg
2:其他客户端测试pull和push
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# tail -1 /etc/hosts
192.168.1.12    registry.fjhb.cn
# scp /etc/pki/CA/cacert.pem root@192.168.1.227:/root
# cp /etc/pki/tls/certs/ca-bundle.crt{,.bak}
# cat cacert.pem >> /etc/pki/tls/certs/ca-bundle.crt

# curl -u yang:123  https://registry.fjhb.cn/v1/search
# service docker restart
# docker  login -u yang -p 123 -e ylw@fjhb.cn https://registry.fjhb.cn
Login Succeeded

# docker  images
# docker tag centos6 registry.fjhb.cn/centos6
# docker push registry.fjhb.cn/centos6



wKioL1SicTTT2h-mAATwsEUVQ_M942.jpg
1
# docker  pull registry.fjhb.cn/registry:v2



wKiom1SicK6RRSuHAAVQbJvNYFk814.jpg
异常处理:
wKiom1SicNuD29cDAAX49u4uxYM811.jpg
1
2
# scp  /etc/pki/CA/cacert.pem root@192.168.2.227:/root
# cat cacert.pem >> /etc/ssl/certs/ca-bundle.crt



运维网声明 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-39982-1-1.html 上篇帖子: 如何在CentOS或Fedora上运行Docker容器? 下篇帖子: Docker简介及在CentOS7上进行安装部署 仓库
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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