2016-09-13 6 views

答えて

11

あなたのホスト上の他のコンテナを生み出すことができるようにドッキングウィンドウへのコンテナのアクセス権を付与することが可能です。あなたは、コンテナ内部で利用可能なdockerクライアントを持っている場合、あなたはあなたのホスト上でドッキングウィンドウデーモンを制御し、にそれを使用することができます、今

docker run -v /var/run/docker.sock:/var/run/docker.sock --name containerB myimage ... 

:あなたは、コンテナ内のドッキングウィンドウソケットを露出させることにより、例えばこれを行いますあなたの "コンテナA"をスポーンする。

セキュリティを考慮する前に、ドッカーへのアクセスはホスト上でrootにアクセスするのと同じです。つまり、Webアプリケーションにリモート妥協がある場合は、攻撃者のホス​​ト。これは、より完全にin this articleで説明されています。

+0

私はこのヒントを続けました。そして私は手動で 'docker'と' docker-compose'をコンテナにコピーしました。 'docker-compose'はコンテナの内部でうまく動作します。しかし、私は '/ usr/lib/x86_64-linux-gnu/libltdl.so.7.3.1'を私のホストからコンテナにコピーし、次にコンテナ内に' ln -sf/usr/lib /x86_64-linux-gnu/libltdl.so.7.3.1/usr/lib/x86_64-linux-gnu/libltdl.so.7'となります。コンテナの内部: 'ldd/usr/bin/docker'すべてのlibsが解決され、' docker'と 'docker-cocmpose'をコンテナ内で実行できます。 – ifelsemonkey

7

ドッカーソケットを取り付けることができます。

コンテナA
時刻をstdout(およびログ)に出力して終了します。

docker run --name contA ubuntu date 

コンテナB
トリックは、コンテナにドッキングウィンドウのクライアントをインストールし、ホストのドッキングウィンドウのソケットを装着することです。まるでホストからドッカーを使用しているかのように、デーモンと対話します。ドッカーがインストールされると、コンテナAが5秒ごとに再起動されます。

docker run --name contB -v /var/run/docker.sock:/var/run/docker.sock ubuntu bash -c " 
apt-get update && apt-get install -y curl && 
curl -sSL https://get.docker.com/ | sh && 
watch --interval 5 docker restart contA" 

あなたはコンタがドッカーが本当に長い実行中のサービスのためのものです、とそのログ

docker logs contA 

を見ることで呼び出されていることがわかります。メンテナンス、cronジョブなどの短命の "仕事"サービスの指定について、Docker githubの問題で話していますが、何も決定されず、コード化されていません。だから、コンテナが稼働するようにシステムを構築するのが最善です。

+0

私はすぐに私の答えを投稿していないので、@ larsksが最初に来た。とにかく役に立つと思うかもしれないコードがあるので、ここにそれを残しておきます。 – Alkaline

+0

それは動作します。ドッカーをドッカーの中に設置することは良いアイデアかどうかは分かりませんが、それは別の疑問です。 @larsksが最初に登場したので、私はちょうどそのことに目を向ける。 –

+0

それは動作しますが、コードは私にはあまり明確ではありません。私はhttps://get.docker.com/ useに困惑しています。とにかく、ドッカーのコンテナ(apt-get install docker-ce)内にdocker-ceをインストールしてから、「docker restart containername」を使って別のドッカーコンテナを再起動する必要があります – Somum

関連する問題