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

[经验分享] 如何部署 Docker Registry 服务3

[复制链接]

尚未签到

发表于 2015-12-25 07:35:42 | 显示全部楼层 |阅读模式
如何部署 Docker Registry 服务
[日期:2015-04-28]来源:livedig.com  作者:KevinSJ[字体:大 中 小]


配置适合 v1 及 v2 版本 Registry 的 Nginx
  本节介绍了如何使用 docker-compose ,在 nginx 代理背后运行版本 1 和 2 并存的 Registry 服务。并存的 Registry 服务都用 localhost:5000 访问。如果 docker 客户端版本小于 1.6,那么 Nginx 将其请求路由到 1.0 版本的 Registry 服务。从更新版本客户端发来的请求,将路由到 2.0 版本的 Registry 服务。
  此过程使用您在上面最后一个过程中创建的 distribution 目录。该目录包含有一个 compose 配置示例。
  
安装 Docker Compose
  1、在你 distribution 目录所在主机上打开一个新的终端窗口。
  2、获取 docker-compose 二进制可执行文件。

$ sudo wget https://github.com/docker/compose/releases/download/1.1.0/docker-compose-`uname -s`-`uname -m` -O /usr/local/bin/docker-compose
  此命令将二进制可执行文件安装到 /usr/local/bin 目录。
  3、添加可执行权限到二进制文件。

$ sudo chmod +x /usr/local/bin/docker-compose
  
做一些清理
  1、移除早先的镜像。

$ docker rmi -f $(docker images -q -a )
  该步骤是一个内部管理步骤。这可以防止你在这个例子里错误地选取了旧的镜像。
  2、编辑 distribution/cmd/registry/config.yml 文件,并移除 tls 区块。
  如果沿用了前面例子里的东西,你就会有一个 tls 区块。
  3、保存变更并关闭文件。
  
配置 SSL
  1、进入 distribution/contrib/compose/nginx 目录。
  该目录包含了 Nginx 及 Registry 的配置文件。
  2、使用 SSL 生成自签名证书。

$ openssl req      -newkey rsa:2048 -nodes -keyout domain.key      -x509 -days 365 -out domain.crt
  此命令将提示你回答一些问题,供证书创建使用。
  3、编辑 Dockerfile 并添加以下行。

COPY domain.crt /etc/nginx/domain.crt
COPY domain.key /etc/nginx/domain.key
  当你全部搞完的时候,这个文件看上去像下面。

FROM nginx:1.7 COPY nginx.conf /etc/nginx/nginx.conf
COPY registry.conf /etc/nginx/conf.d/registry.conf
COPY docker-registry.conf /etc/nginx/docker-registry.conf
COPY docker-registry-v2.conf /etc/nginx/docker-registry-v2.conf
COPY domain.crt /etc/nginx/domain.crt
COPY domain.key /etc/nginx/domain.key
  4、保存并关闭 Dockerfile 文件。
  5、编辑 registry.conf 文件并增加以下配置。

ssl on; ssl_certificate /etc/nginx/domain.crt; ssl_certificate_key /etc/nginx/domain.key;
  这是一个 nginx 配置文件。
  6、保存并关闭 registry.conf 文件。
  
构建并运行
  1、进到 distribution/contrib/compose 目录
  此目录包含单一个 docker-compose.yml 配置。

nginx: build: "nginx" ports:     - "5000:5000" links:     - registryv1:registryv1
    - registryv2:registryv2
registryv1: image: registry
ports:     - "5000" registryv2: build: "../../" ports:     - "5000"
  此配置按 nginx/Dockerfile 所指定,构建一个新的 nginx 镜像。1.0 版本的 Registry 来自 Docker 的官方公开镜像。Registry 2.0 镜像将从你前面用到的 distribution/Dockerfile 来构建。
  2、获取 Registry 1.0 镜像。

$ docker pull registry:0.9.1
  Compose 的配置是在本地寻找此镜像。如果你不做这步,那后面的步骤会失败。
  3、构建 nginx,Registry 2.0 镜像,以及

$ docker-compose build
registryv1 uses an image, skipping Building registryv2...Step 0 : FROM golang:1.4...Removing intermediate container 9f5f5068c3f3Step 4 : COPY docker-registry-v2.conf /etc/nginx/docker-registry-v2.conf ---> 74acc70fa106Removing intermediate container edb84c2b40cb Successfully built 74acc70fa106
  此命令将输出其执行过程,直到运行结束。
  4、启动使用了 Compose 的配置。

$ docker-compose up Recreating compose_registryv1_1...Recreating compose_registryv2_1...Recreating compose_nginx_1...Attaching to compose_registryv1_1, compose_registryv2_1, compose_nginx_1 ...
  5、在另一个终端,显示运行中的配置。

$ docker ps
CONTAINER ID        IMAGE                       COMMAND                CREATED             STATUS              PORTS                                     NAMES
a81ad2557702        compose_nginx:latest        "nginx -g 'daemon of   8 minutes ago       Up 8 minutes        80/tcp, 443/tcp, 0.0.0.0:5000->5000/tcp   compose_nginx_1
0618437450dd        compose_registryv2:latest   "registry cmd/regist   8 minutes ago       Up 8 minutes        0.0.0.0:32777->5000/tcp                   compose_registryv2_1
aa82b1ed8e61        registry:latest             "docker-registry"      8 minutes ago       Up 8 minutes        0.0.0.0:32776->5000/tcp                   compose_registryv1_1
  
浏览一下
  1、检查一下你 nginx 服务器上的 TLS。

$ curl -v https://localhost:5000* Rebuilt URL to: https://localhost:5000/* Hostname was NOT found in DNS cache *   Trying 127.0.0.1...* Connected to localhost (127.0.0.1) port 5000 (#0)* successfully set certificate verify locations:*   CAfile: none CApath: /etc/ssl/certs * SSLv3, TLS handshake, Client hello (1):* SSLv3, TLS handshake, Server hello (2):* SSLv3, TLS handshake, CERT (11):* SSLv3, TLS alert, Server hello (2):* SSL certificate problem: self signed certificate * Closing connection 0 curl: (60) SSL certificate problem: self signed certificate More details here: http://curl.haxx.se/docs/sslcerts.html
  2、标记 v1 registry 镜像。

$ docker tag registry:latest localhost:5000/registry_one:latest
  3、将其推送到 localhost。

$ docker push localhost:5000/registry_one:latest
  如果你在使用 1.6 版本的 Docker 客户端,这将推送镜像到 v2 registry。
  4、使用 curl 来列出 Registry 中的镜像。

$ curl -v -X GET http://localhost:32777/v2/registry1/tags/list* Hostname was NOT found in DNS cache *   Trying 127.0.0.1...* Connected to localhost (127.0.0.1) port 32777 (#0)> GET /v2/registry1/tags/list HTTP/1.1> User-Agent: curl/7.36.0> Host: localhost:32777> Accept: */*
>
< HTTP/1.1 200 OK
< Content-Type: application/json; charset=utf-8
< Docker-Distribution-Api-Version: registry/2.0
< Date: Tue, 14 Apr 2015 22:34:13 GMT
< Content-Length: 39

运维网声明 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-155900-1-1.html 上篇帖子: 搭建一个私有的Docker registry 下篇帖子: 如何部署 Docker Registry 服务2
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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