LoginSignup
13
12

More than 5 years have passed since last update.

docker のコンテナ内から ホストの docker を操作する

Posted at

1. TCP 経由でホストに接続する

docker デーモンの起動オプションの -H オプションで外部からの接続用のポートを追加してあげます。Ubuntu であれば、/etc/default/docker ファイルの DOCKER_OPTS を編集します。

DOCKER_OPTS="-H tcp://172.17.42.1:4243 -H unix:///var/run/docker.sock"

docker デーモンを再起動後、コンテナ内から docker -H 172.17.42.1:4243 で接続できると思います(ネットワークをいじっている場合は IP を変える必要があるかもしれません)。

ちなみに boot2docker だと手順が変わります。0.0.0.0:2376 をリッスンしているので DOCKER_OPTS の変更は不要ですが、tlsverify が指定されていると思うので、cert もってきて tls を使って接続する必要があります。要するに docker-machine がやってくれることをコンテナ内でもやれば OK というだけです。

2. docker.sock を共有する

オススメしていいのか分からないけど、たまに見かけるのが /var/run/docker.sock をコンテナに Volume で渡してあげるやり方です。コンテナに docker がインストールされていない場合は /usr/bin/docker コマンドも一緒に渡してあげればいいです。

$ docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker ubuntu /bin/bash

root@9ba2bef70d02:/# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
9ba2bef70d02        ubuntu:latest       "/bin/bash"         2 minutes ago       Up 2 minutes                            backstabbing_shockley  

注意としては、コンテナ内のユーザーは root か sudo で docker コマンドを叩く必要があります。

13
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
12