zoukankan      html  css  js  c++  java
  • 【docker】开启remote api访问,并使用TLS加密

    背景:

      docker默认是能使用本地的socket进行管理,这个在集群中使用的时候很不方便,因为很多功能还是需要链接docker服务进行操作,docker默认也可以开启tcp访问,但是这就相当于把整个docker集群对外公开了,很不安全,需要假如TLS进行加密通信,操作如下:

    1,TLS配置,生成key文件

    #!/bin/bash
    openssl genrsa -aes256 -out ca-key.pem 4096
    openssl req -new -x509 -days 3650 -key ca-key.pem -sha256 -out ca.pem
    openssl genrsa -out server-key.pem 4096
    openssl req -sha256 -new -key server-key.pem -out server.csr
    openssl x509 -req -days 3650 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem
    openssl genrsa -out key.pem 4096
    openssl req -new -key key.pem -out client.csr
    openssl x509 -req -days 3650 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem
    rm -v client.csr server.csr
    chmod -v 0400 ca-key.pem key.pem server-key.pem
    chmod -v 0444 ca.pem server-cert.pem cert.pem

    2,将ca.pem,server-cert.pem,server-key.pem复制到要开启远程访问服务器的/root/.docker目录下(随便放哪都行)

    3,修改docker启动文件,以centos7为例

      vim  /lib/systemd/system/docker.service

      修改execstart配置

      ExecStart=/usr/bin/dockerd -H unix:///var/run/docker.sock -D -H tcp://0.0.0.0:2375 --tlsverify --tlscacert=/root/.docker/ca.pem -- tlscert=/root/.docker/server-cert.pem --tlskey=/root/.docker/server-key.pem
    4,重新加载配置文件,重启docker进程
      systemctl daemon-reload
      service docker restart
    5,测试
      将cert.pem,key.pem这两个文件复制到测试机上, curl中-k的意思是Allow connections to SSL sites without certs,不验证证书
      curl -k https://docker服务器IP:2375/info --cert ./cert.pem --key ./key.pem
    6,能返回docker信息即为完成
  • 相关阅读:
    COGS 577 蝗灾 线段树+CDQ分治
    BZOJ 1305 二分+网络流
    BZOJ 1066 Dinic
    BZOJ 3544 treap (set)
    BZOJ 3940 AC自动机
    BZOJ 1503 treap
    BZOJ 3172 AC自动机
    BZOJ 2553 AC自动机+矩阵快速幂 (神题)
    BZOJ1901 ZOJ2112 线段树+treap (线段树套线段树)
    BZOJ 3196 线段树套平衡树
  • 原文地址:https://www.cnblogs.com/zhenglisai/p/8416353.html
Copyright © 2011-2022 走看看