Dockerコンテナへ異なる端末から接続する方法について紹介します。

外部端末からDockerコンテナへはそのままではアクセスできない

DockerをインストールするとDocker0というブリッジが作られて下図のようなネットワーク構成になります。

Dockerを起動しているサーバ内からはSSHやSCPでDockerのコンテナにアクセスすることができるのですが、Dockerを起動しているサーバとは別の端末(上図のWindows端末)からはそのままではアクセスできません。

ルーティングの設定を行うことで外部端末からDockerコンテナへアクセスできる

 

外部端末からDockerコンテナへアクセスする方法を検索するとツールを導入したりといくつかやり方が見つかります。しかし、どれも手間がかかりあまりいいやり方がありませんでした。試行錯誤するとWindows端末にルーティング設定を一つ追加するだけでアクセスできることが分かりましたのでその方法を紹介します。

方法はWindows端末で以下のコマンドを実行するだけです。

route -p add 172.17.0.0 mask 255.255.0.0 [DockerホストのIPアドレス(図のeth0)]

172.17.0.0の部分はDocker0のサブネットを指定、デフォルトだと172.17ですが必要に応じて変更します。

要は172.17.x.xへのアクセスをDockerを入れているホストのIPアドレスに飛ばしているだけです。これでDockerを起動しているサーバと同じネットワークにいる端末からはアクセスできました。