注意

※production環境ではセキュリティ上好ましくないので、あまりしないほうがいいです(v19からroot権限不要化されたので気にする必要はない?→経路のhttps可などはやっておいてもよさそう)

構成

  • ホスト:Debian 10 (VirtualBox on Windows) ※これ
  • ゲスト:Debian 10
  • Docker:Docker version 19.03.2, build 6a30dfc
  • Compose:docker-compose version 1.24.1, build 4667896b

ホストでの作業:Dockerデーモンの設定変更

Dockerデーモンは、デフォルトではunixソケットで動作しているので、TCPでアクセス出来るよう変更します

1
$ sudo vim /etc/init/docker.conf
1
2
// DOCKER_OPTSの行を変更
DOCKER_OPTS="-d -H=tcp://127.0.0.1:4243"

Systemdで動かしている場合はdaemon-scriptも変更しておきます

1
$ sudo vim /usr/lib/systemd/system/docker.service
1
2
// ExecStartの行を変更
ExecStart=/usr/bin/dockerd -H unix:// -H tcp://0.0.0.0:4243

変更したら再起動

1
2
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker

ホストでの作業:コンテナにマウントする

対象のコンテナのvolumesに以下のように追記します

1
2
3
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /usr/bin/docker:/usr/bin/docker

ゲスト側での作業:動作確認

DOCKER_HOST環境変数に、ゲストからみたホストのIPと、ホスト側で設定したポート番号を設定します

1
2
// 継続して使う場合は.bash_profileやdocker-compose.ymlなどに記載して下さい
$ export DOCKER_HOST="172.18.0.1:4243"

その後docker -vとかではなく、docker psなどを実行してみて、permission deniedなどが出なければOKです

1
2
3
$ docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES