macvlan ネットワークの使用¶
コンテナ上でネットワーク機能スタックを完全に無効にしたい場合は、コンテナの起動時に --network none
フラグを使います。コンテナ内では、ループバック・デバイスのみが作成されます。これを説明するのが以下の例です。
コンテナを作成します。
$ docker run --rm -dit \ --network none \ --name no-net-alpine \ alpine:latest \ ash
コンテナのネットワーク・スタックを確認し、コンテナ内で一般的なネットワークに関するコマンドをいくつか実行します。
eth0
が作成されていない点に注目します。$ docker exec no-net-alpine ip link show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: tunl0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN qlen 1 link/ipip 0.0.0.0 brd 0.0.0.0 3: ip6tnl0@NONE: <NOARP> mtu 1452 qdisc noop state DOWN qlen 1 link/tunnel6 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 brd 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
$ docker exec no-net-alpine ip route
2つめのコマンドが何も返さないのは、ルーティング・テーブルが存在しないからです。
コンテナを停止すると、自動的にコンテナは削除されます。これは作成時に
--rm
フラグを指定しているからです。$ docker stop no-net-alpine
次のステップ¶
- ホスト・ネットワーク機能のチュートリアル に進む
- コンテナ視点からのネットワーク機能 について学ぶ
- ブリッジ・ネットワーク について学ぶ
- オーバレイ・ネットワーク について学ぶ
- Macvlan ネットワーク について学ぶ
参考
- Disable networking for a container
- https://docs.docker.com/network/host/