Docker创建本地仓库

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

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

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

# docker run -idt -p 5000:5000 --name registry -v /data/registry:/tmp/registry registry

二:配置Nginx, 需要配置用户验证和https支持

# /usr/local/nginx/sbin/nginx -V

# 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

3:生成nginx的key和nginx.csr证书请求文件

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

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

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

# 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

五:测试

1:本地测试push

# docker login -u yang -p 123 -e [email protected] registry.fjhb.cn
# docker images
# docker tag registry registry.fjhb.cn/registry:v2
# docker push registry.fjhb.cn/registry:v2

2:其他客户端测试pull和push

# tail -1 /etc/hosts
192.168.1.12    registry.fjhb.cn
# scp /etc/pki/CA/cacert.pem [email protected]:/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 [email protected] https://registry.fjhb.cn 
Login Succeeded
 
# docker  images
# docker tag centos6 registry.fjhb.cn/centos6
# docker push registry.fjhb.cn/centos6

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

异常处理:

# scp  /etc/pki/CA/cacert.pem [email protected]:/root
# cat cacert.pem >> /etc/ssl/certs/ca-bundle.crt

参考:

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

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

时间: 2024-11-04 17:46:39

Docker创建本地仓库的相关文章

Git 创建本地仓库

前面已经搭好环境了,现在我们缺的是一个管理版本控制的仓库.这次的实验是在电脑本地创建本地仓库. 指定路径 默认的位置是在你所安装Git的目录下.Git的仓库你可以建在你电脑的任何目录下(最好不要包含有中文目录).通过命令行cd指定到你想要的目录下,例如: cd ../g/Git 上面的命令将指定到g盘下Git文件夹内. 当然Git目录是我事先建好的文件夹,你也可以先指定到g,再在g盘下创建新的目录,使用命令行mkdir: mkdir Git 查看路径  如果不确定目前的目录,可以使用pwd查看现

EGit系列第一篇——创建本地仓库

首先,用Eclipse创建一个项目,然后右键项目Team\Share Preject... 然后出来Share Preject对话框,选择git 点击下一步配置Git仓库,通常在项目本地目录创建仓库,所以勾选上面的Use or create rep... in parent folder of preject 再点击右边的Create...按钮 再点击Create Repository按钮,创建本地仓库 然后点击finish就可以了 然后你的项目图标的右下角就会出现一个黄色的仓库图标,每个目录或

和同事合作开发,使用局域网 git创建本地仓库

转自原文 和同事合作开发,使用局域网 git创建本地仓库 1.仓库 建一个空文件夹来做仓库,例如建为 cangku 1.1 cd 到 cangku目录下 创建远程仓库容器 mkdir  mycangku.git 1.2 cd mycangku.git  创建初始化git仓库  git init —bare 这样仓库就建好了,pwd查看仓库路径,假设为 /abcd 2.项目 2.1 cd 到项目目录下    git add.  git commit -m “提交" 2.2 项目目录下 git re

iOS 电脑新装的系统, 使用sourceTree 创建本地仓库的时候, 总是提示, 无效路径

把qq聊天记录分享出来: 我电脑新装的系统, 使用sourceTree 创建本地仓库的时候, 总是提示, 无效路径 请问哪位遇到过 求指教 群里有产品经理没有? ssh 配制的不对 重装系统过后,重新生成一下你的ssh,然后在GitHub 上添加你的ssh,再用source tree 就可以了 确实如此, 重新生成就好了

git 创建本地仓库与 gitcafe 关联

git init                               # 创建本地仓库 # 设置远程仓库地址,这里可以设置ssh 或 https 的形式,此处设置为https 格式, # ssh 格式为 : git  remote add origin [email protected]:sql031625/test.git git remote add origin https://git.coding.net/sql031625/test.git touch a.py        

git 创建本地仓库、远程仓库,上传项目

1.在本地想创建git仓库的地方创建本地仓库 首先右键打开 Git Bash Here,如果没有,请先安装git,下载地址:https://git-scm.com/downloads git init 2.git add (myTest) -----myTest为即将上传的项目 3.git commit myTest -m "此处为上传的项目的备注" 4.git status 查看更新的文件 5.git push origin Test:Test    提交本地的Test分支作为远程仓

Git----介绍&下载&安装&创建本地仓库

一.Git介绍 1.0.Git是分布式版本控制工具 1.1.历史 Linux 内核开源项目有着为数众广的参与者.绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上(1991-2002年间).到 2002 年,整个项目组开始启用分布式版本控制系统 BitKeeper 来管理和维护代码.到 2005 年的时候,开发 BitKeeper 的商业公司同 Linux 内核开源社区的合作关系结束,他们收回了免费使用 BitKeeper 的权力.这就迫使 Linux 开源社区(特别是

Git 创建远程仓库并克隆到本地,创建本地仓库并推送到远程仓库

配置用户信息 配置的是你个人的用户名称和电子邮件地址.这两条配置很重要,每次 Git 提交时都会引用这两条信息,说明是谁提交了更新,会随更新内容一起被永久纳入历史记录 git config --global user.name "testerDong" git config --global user.email "[email protected]" 1.创建远程仓库,克隆远程仓库到本地 a.先在GitHub上创建一个远程仓库 b.复制该仓库SSH地址 c.git

docker搭建本地仓库并制作自己的镜像

原文地址https://blog.csdn.net/junmoxi/article/details/80004796 1. 搭建本地仓库1.1 下载仓库镜像1.2 启动仓库容器2. 在CentOS容器中安装JDK2.1 下载CentOS容器2.2 运行Linux容器:2.3 将JDK复制到myCentos容器中2.4 进入容器2.5 解压JDK2.6 配置环境变量2.6.1 刷新环境变量2.6.2 设置开机自动执行source2.6.3 重启容器2.7 将容器提交到镜像里3. 将新制作的镜像推送