今から始めるDockerを始める人のためのDockerコマンド~ネットワーク編-その1~
Dockerをこれから学習していく方のために、Dockerのコマンドを紹介していきたいと思います。今回は、ネットワーク編ということで大きく下記の内容について紹介したいと思います。
- Docker で扱えるネットワークの種類
- bridgeネットワークの作成
もし、Dockerの用語がわからない場合は、Dockerのコンポーネントについても紹介していますので、下記に目を通しておくことをお勧めします。
Dockerのコマンド体系はv1.13 以降新しいコマンド体系を採用しています。v1.13より前のコマンドも利用する事は可能ですが、これから学習する場合は新しいコマンド体系で学習していきましょう。今回紹介するコマンドは新しい体系のコマンドとなっています。
Docker で扱えるネットワークの種類
Dockerで利用できる扱えるネットワークドライブとしては下記があります。
- none
- host
- bridge
- overlay
- macvlan
- ipvlan
実は、Docker で扱えるネットワークについては docker info でも確認できます。
# docker info | grep Network: Network: bridge host ipvlan macvlan null overlay
これから、これらのネットワークドライブについて簡単に説明しますが、作成するコマンドのオプションなど公式ドキュメントに記載ありますので、併せて確認するとよいかと思います。
none ネットワーク
コンテナをネットワークから完全に切り離したい場合に利用します。
作成方法
docker network create で作成はできず、コンテナ作成時に–network none オプションをつけてコンテナを起動すると、ループバックのデバイスのみ作成されたコンテナが起動します。
# docker run -d --network=none --name <container name> <image>
host ネットワーク
ホストOSのIPアドレスをそのままコンテナで使用する場合に利用します。
–network host オプションをつけてコンテナを起動すると、ホストOSとネットワークのネームスペースを共有したコンテナが起動します。
言い換えると、ホストOSと全く同一のネットワーク(デバイスやIP)をもったコンテナが作成されます。
ホストOSとコンテナとでネットワークのネームスペースを共有しているため下記の特徴があります。
- ホストOSと通信できるサーバや端末から直接コンテナにアクセスすることが可能
- ホストOSとコンテナとで重複してポートを利用する事ができない
また、hostネットワークドライバーはLinuxホストでのみ機能し、Mac用Dockerデスクトップ、Windows用Dockerデスクトップ、またはWindowsサーバー用Docker EEではサポートされていません。
作成方法
dockerの初回起動時デフォルトで作成されるため、docker network create で作成できません。
コンテナ作成時に–network host オプションをつけてコンテナを起動すると、hostネットワークを持ったコンテナが起動します。
# docker run -d --network=host --name <container name> <image>
bridge ネットワーク
コンテナ間で通信を行いたい場合に利用するネットワークドライブです。同じブリッジネットワークに接続されたコンテナーが通信できるようにし、そのブリッジネットワークに接続されていないコンテナーからの分離します。
ネットワークドライブを指定しないでコンテナを起動すると、デフォルトのブリッジネットワークに接続されます。
ブリッジネットワークには、デフォルトのブリッジネットワークとユーザー定義のブリッジネットワークの2種類があり、主な特徴は下記となります。
- コンテナが起動中でも、ユーザ定義ブリッジネットワークであれば
接続・切断可能 - ユーザー定義ブリッジネットワークは、コンテナ間で名前解決が可能
ブリッジネットワークドライブは機能や違いが多いので、細かい設定や内容を確認したい場合は、公式ドキュメントを確認することをお勧めします。
作成方法
# docker network create --driver=bridge <option> <bridge name>
–driver=bridge オプションをつけてネットワークを作成することが可能です。
bridge のセグメントを指定した場合などは下記の様に指定します。
docker network create \ --driver=bridge \ --subnet=172.28.0.0/24 \ --gateway=172.28.0.1 \ brg01
overlay ネットワーク
複数のドッカーデーモンホスト間で分散型ネットワークを作成する際に利用するネットワークドライブです。
つまり、オーバーレイネットワークを利用する事によって、別のサーバで稼働しているDocker上のコンテナと通信することが可能となります。
このオーバーレイネットワークを利用するには、DockerデーモンをSwarm サービスをりようするひつようがあり、Swarm Managerとして初期化するか、既存のSwarmに参加させる必要があります。
作成方法
# docker network create --driver=overlay <option> <overlay name>
–driver=overlay オプションをつけてネットワークを作成することが可能です。
macvlan ネットワーク / ipclvlan ネットワーク
macvlanとipvlan については利用用途があまりないため、今回の説明対象外としたいと思います。
今後リクエストがあれば、詳細記載していきたいと思います。