Docker创建本地仓库

Docker是时下相当火热的技术,关于docker的介绍此处就不多说,本文主要介绍下如何在centos6.6环境下配置docker的本地仓库,对于想在局域网内大规模运用docker来说,频繁的从官网仓库下载镜像文件,无论从管理还是在效率上都无法接受。


一:以容器的方式运行registry服务

初次运行,本地不存在registryimage,会自动从官方网站上下载一份,速度较慢

# 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

# 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生成根密钥

# cd /etc/pki/CA/
# touch ./{serial,index.txt}
# echo "00" > serial
# openssl  genrsa -out private/cakey.pem 2048

2生成根证书

# openssl  req -new -x509 -key private/cakey.pem -days 3650 -out cacert.pem

wKiom1SibxuytRkdAAW6hQK0d9I207.jpg

3:生成nginxkeynginx.csr证书请求文件

# cd /etc/ssl/
# openssl genrsa -out nginx.key 2048
# openssl  req -new -key nginx.key -out nginx.csr

wKiom1Sib0OxlfMZAAidSOMp6WU745.jpg

4私有CA根据请求来签发证书

# openssl ca -in nginx.csr -days 3650 -out nginx.crt

wKiom1Sib3SC5tyMAAfGjOrcG-I265.jpg

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

5:复制生成的证书文件到相应位置

# cp nginx.crt  certs/
# cp nginx.key  private/

6:使用htpasswd工具创建密码文件

# 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

# /usr/local/nginx/sbin/nginx  -t
# /usr/local/nginx/sbin/nginx 
# netstat -ntpl |grep nginx

wKiom1Sib_nizmheAANEYqizGvU149.jpg

五:测试

1本地测试push

# 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:其他客户端测试pullpush

# 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

# docker  pull registry.fjhb.cn/registry:v2

wKiom1SicK6RRSuHAAVQbJvNYFk814.jpg

异常处理:

wKiom1SicNuD29cDAAX49u4uxYM811.jpg

# scp  /etc/pki/CA/cacert.pem root@192.168.2.227:/root
# cat cacert.pem >> /etc/ssl/certs/ca-bundle.crt

参考:

http://blog.94it.net/post/openssl-ca.html

http://segmentfault.com/blog/seanlook/1190000000801162

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
创建本地Docker镜像仓库,可以将镜像保存在本地,方便快速地共享和部署。以下是创建Docker本地镜像仓库的步骤: 1. 安装Docker 如果您还没有安装Docker,请先安装Docker。请按照以下步骤进行操作: - 在Linux上安装Docker:https://docs.docker.com/engine/install/ - 在Windows上安装Docker:https://docs.docker.com/docker-for-windows/install/ - 在Mac上安装Docker:https://docs.docker.com/docker-for-mac/install/ 2. 配置Docker镜像仓库 创建一个目录作为Docker镜像仓库的存储路径,例如:/opt/docker-registry。在该目录下创建一个名为config.yml的文件,用于配置Docker镜像仓库的认证和访问控制。 ``` version: 0.1 log: level: debug formatter: text storage: filesystem: rootdirectory: /var/lib/docker-registry auth: htpasswd: realm: basic-realm path: /opt/docker-registry/auth/htpasswd ``` 在以上配置中,我们使用htpasswd进行认证。我们需要创建一个htpasswd文件,用于存储用户名和密码。可以使用以下命令创建一个htpasswd文件: ``` mkdir /opt/docker-registry/auth htpasswd -bBc /opt/docker-registry/auth/htpasswd myuser mypassword ``` 这将创建一个包含用户名和密码的htpasswd文件。 3. 运行Docker镜像仓库 使用以下命令启动Docker镜像仓库: ``` docker run -d -p 5000:5000 --restart=always --name registry \ -v /opt/docker-registry:/var/lib/docker-registry \ -v /opt/docker-registry/config.yml:/etc/docker/registry/config.yml \ registry:2 ``` 这将在后台运行Docker镜像仓库,并将其暴露在5000端口上。 4. 测试Docker镜像仓库 现在我们可以测试Docker镜像仓库是否正常工作。使用以下命令从默认的Docker Hub拉取一个镜像,并将其推送到本地的Docker镜像仓库中: ``` docker pull alpine docker tag alpine localhost:5000/alpine docker push localhost:5000/alpine ``` 这将从Docker Hub拉取alpine镜像,并将其标记为localhost:5000/alpine。然后,它将推送该镜像到本地的Docker镜像仓库中。 5. 使用Docker镜像仓库 现在我们可以使用本地的Docker镜像仓库来拉取和推送镜像。使用以下命令从本地的Docker镜像仓库中拉取alpine镜像: ``` docker pull localhost:5000/alpine ``` 这将从本地的Docker镜像仓库中拉取alpine镜像。 我们还可以将其他镜像推送到本地的Docker镜像仓库中,并使用它们来部署应用程序。 以上就是创建Docker本地镜像仓库的步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值