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 コマンドを叩く必要があります。