czhtr 发表于 2015-12-25 07:39:42

如何部署 Docker Registry 服务2

如何部署 Docker Registry 服务
[日期:2015-04-28]来源:livedig.com作者:KevinSJ[字体:大 中 小]

在 Registry 服务器上配置 TLS
  在本节中,将在服务器上配置 TLS,使能通过 https 协议来通信。在服务器上启用 TLS 是在企业防火墙内运行 Registry 推荐的最低安全配置。达成这一目标的方法之一就是构建你自己的 Registry 镜像。
  
下载 source 并生成 certificates
  1、下载 Registry 源码。
  当然,也可以使用 git clone 命令。
  2、把下载的包解压到本地目录。
  解压后创建 distribution 目录。
  3、进入 distribution 目录。

$ cd distribution
  4、新建 certs 子目录。

$ mkdir certs
  5、使用 SSL 生成自签名证书。

$ openssl req      -newkey rsa:2048 -nodes -keyout certs/domain.key      -x509 -days 365 -out certs/domain.crt
  此命令将提示你回答一些基本的信息,用于创建证书。
  6、列出 certs 目录的内容。

$ ls certs
domain.crt domain.key
  当你构建这个 Container 时,certs 目录及其内容也会自动被复制。
  
将 TLS 加入配置
  distribution 软件库在 cmd 子目录中包含有示例 Registry 配置。在本节中,您可以编辑这些配置之一,以添加 TLS 支持。
  1、编辑 ./cmd/registry/config.yml 文件。

$ vi ./cmd/registry/config.yml
  2、定位到 http 区块。

http:   addr: :5000   secret: asecretforlocaldevelopment
    debug:             addr: localhost:500
  3、给服务器的自签名证书新增一个 tls 区块:

http:   addr: :5000   secret: asecretforlocaldevelopment
    debug:             addr: localhost:5001   tls:         certificate: /go/src/github.com/docker/distribution/certs/domain.crt
      key: /go/src/github.com/docker/distribution/certs/domain.key
  提供 Container 内到证书的路径。如果你希望跨 Layer 使用两步认证,那么你可以增加一个 clientcas 区块选项。
  4、保存并关闭该文件。
  
构建并运行你的 Registry 镜像
  1、构建你的 Registry 镜像。

$ docker build -t secure_registry .
  2、运行你的新镜像。

$ docker run -p 5000:5000 registry_local:latest
time="2015-04-12T03:06:18.616502588Z" level=info msg="endpoint local-8082 disabled, skipping" environment=development instance.id=bf33c9dc-2564-406b-97c3-6ee69dc20ec6 service=registry
time="2015-04-12T03:06:18.617012948Z" level=info msg="endpoint local-8083 disabled, skipping" environment=development instance.id=bf33c9dc-2564-406b-97c3-6ee69dc20ec6 service=registry
time="2015-04-12T03:06:18.617190113Z" level=info msg="using inmemory layerinfo cache" environment=development instance.id=bf33c9dc-2564-406b-97c3-6ee69dc20ec6 service=registry
time="2015-04-12T03:06:18.617349067Z" level=info msg="listening on :5000, tls" environment=development instance.id=bf33c9dc-2564-406b-97c3-6ee69dc20ec6 service=registry
time="2015-04-12T03:06:18.628589577Z" level=info msg="debug server listening localhost:5001"2015/04/12 03:06:28 http: TLS handshake error from 172.17.42.1:44261: remote error: unknown certificate authority
  观察启动时的信息。你应该可以看到 tls 在运行。
  3、使用 curl 验证可以通过 https 连接。

$ 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
页: [1]
查看完整版本: 如何部署 Docker Registry 服务2