如何在远程主机上运行docker容器?

我想从Jenkins作业的远程主机上运行两个容器。 我有ssh访问,但我不想使用ssh。

它目前的工作如下:

ssh -T <HOST> docker login -u testuser -p testpassword registry:5000 ssh -T <HOST> docker pull registry:5000/db:${VERSION} ssh -T <HOST> docker pull registry:5000/app:${VERSION} 

我怎么能没有ssh -T

在Jenkins上安装Docker客户端,然后用TLS键设置Docker服务器和客户端。 以下是通过命令快速设置自签名CA +密钥的步骤:

自签名的CA服务器

 #在一个安全的文件夹中工作
 mkdir docker-ca && chmod 700 docker-ca && cd docker-ca
 #为CA生成密钥对
 openssl genrsa -aes256 -out ca-key.pem 2048
 #设置CA证书
 openssl req -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem
   #确保设置CN

服务器证书

 #生成一个新的主机密钥对
 openssl genrsa -out myserver-key.pem 2048
 #生成证书签名请求(CSR)
 openssl req -subj“/ CN = myserver”-new -key myserver-key.pem -out myserver.csr
 #设置extfile ip允许
 echo“subjectAltName = IP:$ myserver_ip,IP:127.0.0.1”> extfile.cnf
 #由CA签署密钥
 openssl x509 -req -days 365 -in myserver.csr -CA ca.pem -CAkey ca-key.pem \
   -CAcreateserial -out myserver-cert.pem -extfile extfile.cnf
 #通过更新服务testing服务器:
 / usr / bin / docker守护进程-H fd:// -H tcp://0.0.0.0:2376 --tlsverify \
   --tlscacert = / etc / docker / ca.pem --tlscert = / etc / docker / myserver-cert.pem \
   --tlskey =的/ etc /搬运工/ MYSERVER-key.pem

您需要使用上面的TLS选项更新服务器启动脚本,每个平台都有所不同,但systemd文件将从/lib/systemd/system/docker.service复制到/etc/systemd/system/docker.service ,编辑,然后加载sudo systemctl daemon-reload && sudo systemctl restart docker

客户证书

 #创build一个客户端密钥对
 openssl genrsa -out client-key.pem 2048
 #为客户端密钥生成csr
 openssl req -subj'/ CN = client'-new -key client-key.pem -out client.csr
 #configuration请求以支持客户端
 echo extendedKeyUsage = clientAuth> extfile.cnf
 #用CA签署客户端密钥
 openssl x509 -req -days 365 -in client.csr -CA ca.pem -CAkey ca-key.pem \
   -CAcreateserial -out client-cert.pem -extfile extfile.cnf
 #用客户端testing
docker工人--tlsverify \
   --tlscacert = ca.pem --tlscert = client-cert.pem --tlskey = client-key.pem \
   -H = tcp://127.0.0.1:2376 info`

$HOME/.docker您可以添加:ca.pem,key.pem和cert.pem。 然后export DOCKER_TLS_VERIFY=1export DOCKER_HOST=your_docker_server作为login脚本(.bashrc)的一部分。

您可以将一个Docker客户端安装到Jenkins Box中并使用它来更新您的容器。

为了这个任务我使用了docker远程API。