Ubuntu上的DOCKER_TLS_VERIFY,DOCKER_HOST和DOCKER_CERT_PATH

如果在Ubuntu上没有设置DOCKER_TLS_VERIFYDOCKER_HOSTDOCKER_CERT_PATH ,那么我自己导出这些variables的默认值是什么(我没有使用Docker Machine)?

 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 

默认值是未设置的,docker cli默认使用/var/run/docker.sock和/或systemd。 但是,从您对ldg的评论中,您有一个应用程序要求设置这些应用程序,这意味着它要求您在主机上configurationTLS以进行远程访问。 以下是configurationTLS密钥的步骤:

设置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有上面的( -H unix:/var/run/docker.sock将被用来代替-H fd://如果你没有systemd )。

客户证书

在“.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。

你可以试试这个:

如果您正在使用Apache Maven等应用程序需要设置DOCKER_HOST和DOCKER_CERT_PATH环境variables的应用程序,请指定这些通过Unix套接字连接到Docker实例。 例如:

export DOCKER_HOST=unix:///var/run/docker.sock

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

你可以使用你的系统find这些值

 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 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来运行docker

sudo docker ps