2016-07-12 11 views
1

Jenkinsジョブからリモートホスト上の2つのコンテナを実行します。私は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せずにそれを行うことができますか?

答えて

-1

この作業では、ドッカーリモートAPIを使用しました。

0

Jockkins Boxにドッカークライアントをインストールし、それを使用してコンテナを更新することができます。

+0

私はJenkins Boxにドッカークライアントを持っています。私はTLS証明書を持っています。 sshを使わずにpullを使いたいです。 – kvendingoldo

3

JenkinsにDockerクライアントをインストールし、Tockキーを使用してDockerサーバーとクライアントをセットアップします。ここでは、セットアップのコマンドの貫通ざっと自己署名CA +キーです:

セルフ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 

あなたは、サーバの起動を更新したいと思いますスクリプトは上記のTLSオプションを使用していますが、これはプラットフォームごとに異なりますが、systemdファイルは/lib/systemd/system/docker.serviceから/etc/systemd/system/docker.serviceにコピーされ、編集されてからsudo systemctl daemon-reload && sudo systemctl restart dockerがロードされます。

あなたが追加することができます$HOME/.docker

 
# 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` 

クライアント証明書:ca.pem、key.pemとcert.pemに。次に、ログインスクリプト(.bashrc)の一部としてexport DOCKER_TLS_VERIFY=1export DOCKER_HOST=your_docker_serverを入力します。

+0

私はTLS証明書を持っています。私のレジストリはそれらを通って動作します。 *リモートホスト*上でsshなしでどのようにプルすることができますか? – kvendingoldo

+0

あなたの環境で最後のディテールを忘れた場合は、 'docker -H hostname ...'かDOCKER_HOSTを設定することができます。リモートドッカーエンジンとクライアントでTLSをセットアップし、ポートでリッスンするようにサーバーを構成する場合は、上記の手順に従ってサーバーをリモートからアクセスできます。 – BMitch

関連する問題