配置docker run使用ssl/https/tls

5 ssl https docker docker-run

有没有办法配置 docker run 使用 https?就像是:

docker run --https --certs xyz  myimage 
Run Code Online (Sandbox Code Playgroud)

或者你必须在 Dockerfile/image 中配置这些东西吗?对于 TLS 也是如此。

 docker run --tls --certs xyz  myimage 
Run Code Online (Sandbox Code Playgroud)

优点之一是我们不必将证书复制到映像中 - 我宁愿避免在映像和/或正在运行的容器中包含证书。

尽管我认为最佳实践是使用将-v主机中的证书共享到容器中的选项。

更新:经过一些研究,我发现了这个: https: //docs.docker.com/engine/security/https/

它说用这样的东西启动 docker 域:

 dockerd --tlsverify --tlscacert=ca.pem \
   --tlscert=server-cert.pem --tlskey=server-key.pem \
   -H=0.0.0.0:2376
Run Code Online (Sandbox Code Playgroud)

为了保护机器上的所有容器,这样做是否正确?

BMi*_*tch 3

tls选项dockerd用于将守护程序配置为侦听网络端口,而不是 docker.sock,或者除了 docker.sock 之外。这是为了 docker API 请求,而不是为了到达您的应用程序,我不相信您所要求的。

听起来您正在寻找 TLS 终止并以 HTTP 将请求转发到您的应用程序。为此,可以在容器前面运行各种反向代理。示例包括 nginx、traefik、haproxy,我相信大多数(如果不是全部)都具有 TLS 终止功能。他们确实倾向于关注第 7 层和 HTTP 协议,因此如果您有其他类型的协议,您可能会被迫将 TLS 凭据安装到容器中,最好作为秘密,或者在最坏的情况下作为只读卷。