Linux.中国 - 开源社区

 找回密码
 骑士注册

QQ登录

微博登录


如何部署 Docker Registry 服务

2015-4-28 09:06    收藏: 2    

在 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
查看其它分页:

发表评论


最新评论

我也要发表评论

返回顶部

分享到微信朋友圈

打开微信,点击底部的“发现”,
使用“扫一扫”将网页分享至朋友圈。