Ubuntu上的DOCKER_TLS_VERIFY,DOCKER_HOST和DOCKER_CERT_PATH

时间:2016-07-09 21:36:19

标签: docker docker-api

如果未在Ubuntu上设置DOCKER_TLS_VERIFYDOCKER_HOSTDOCKER_CERT_PATH,我自己导出变量的默认值是什么(我不使用Docker Machine)?< / p>

ps aux | grep "docker daemon"

返回:

root       1828  2.4  0.5 764036 44804 ?        Ssl  21:32   0:01 /usr/bin/docker daemon --raw-logs
alexzei+   6557  0.0  0.0  15948  2268 pts/15   S+   21:33   0:00 grep --color=auto docker daemon

3 个答案:

答案 0 :(得分:6)

默认值未设置且docker cli默认使用/var/run/docker.sock和/或systemd。但是,从您对ldg的评论,您有一个应用程序需要设置这些,这表明它希望您在主机上配置TLS以进行远程访问。以下是配置TLS密钥的步骤:

设置CA

# work in a secure folder
mkdir docker-ca && chmod 700 docker-ca && cd docker-ca
# generate a key pair for the CA
openssl genrsa -aes256 -out ca-key.pem 2048
# setup CA certificate
openssl req -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem
  # make sure to set CN

服务器证书

# generate a new host key pair
openssl genrsa -out myserver-key.pem 2048
# generate certificate signing request (CSR)
openssl req -subj "/CN=myserver" -new -key myserver-key.pem -out myserver.csr
# setup extfile for ip's to allow
echo "subjectAltName = IP:$myserver_ip, IP:127.0.0.1" >extfile.cnf
# sign the key by the CA
openssl x509 -req -days 365 -in myserver.csr -CA ca.pem -CAkey ca-key.pem \
  -CAcreateserial -out myserver-cert.pem -extfile extfile.cnf
# test server by updating service:
/usr/bin/docker daemon -H fd:// -H tcp://0.0.0.0:2376 --tlsverify \
  --tlscacert=/etc/docker/ca.pem --tlscert=/etc/docker/myserver-cert.pem \
  --tlskey=/etc/docker/myserver-key.pem

您需要更新Docker的操作系统启动脚本,以便在其中包含上述内容(如果您没有systemd,将使用-H unix:/var/run/docker.sock代替-H fd://。)

客户证书

在“.docker”中,您可以添加:“ca.pem,key.pem,cert.pem”,然后添加export DOCKER_TLS_VERIFY=1

# create a client key pair
openssl genrsa -out client-key.pem 2048
# generate csr for client key
openssl req -subj '/CN=client' -new -key client-key.pem -out client.csr
# configure request to support client
echo extendedKeyUsage = clientAuth >extfile.cnf
# sign the client key with the CA
openssl x509 -req -days 365 -in client.csr -CA ca.pem -CAkey ca-key.pem \
  -CAcreateserial -out client-cert.pem -extfile extfile.cnf
# test client with
docker --tlsverify \
  --tlscacert=ca.pem --tlscert=client-cert.pem --tlskey=client-key.pem \
  -H=tcp://127.0.0.1:2376 info`

然后DOCKER_CERT_PATH将是包含证书的文件夹,例如/home/user/.docker。

答案 1 :(得分:3)

你可以试试这个:

  

如果您正在使用Apache Maven等期望的应用程序   DOCKER_HOST和DOCKER_CERT_PATH环境变量的设置,   指定这些通过Unix套接字连接到Docker实例。对于   例如:

trisolve( side1 = 1, angle1 = 90, angle2 = 45 );

答案 2 :(得分:3)

使用 export DOCKER_TLS_VERIFY="1" export DOCKER_HOST="tcp://0.0.0.0:2376" export DOCKER_CERT_PATH="/etc/docker/server.pem"

您可以使用

在系统中找到值
ps aux | grep "docker daemon"

例如,就我而言,我得到了 root 25161 0.0 1.8 545784 38496 ? Ssl 07:11 0:00 /usr/bin/docker daemon -H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock --storage-driver aufs --tlsverify --tlscacert /etc/docker/ca.pem --tlscert /etc/docker/server.pem --tlskey /etc/docker/server-key.pem --label provider=amazonec2

但您可能必须使用sudo来运行泊坞窗

sudo docker ps