1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[メモ]初心者がコンテナを触ってみる - (3)Dockerコンテナ・ネットワークの操作

Posted at

はじめに

お疲れ様です。yuki_inkです。
初心者がコンテナを触ってみるシリーズ3回目です。

前回はDockerイメージを操作するコマンドを扱いました。
今回はDockerコンテナを操作するコマンドを扱います。

やったこと

  • Dockerコンテナのライフサイクル関連(生成・起動・停止・削除)
  • Dockerネットワーク関連

Dockerコンテナのライフサイクル関連

この記事の通り!以上!(省エネ)
特に詰まったところもなし。

記事の中に貼ってあるこの画像は分かりやすかった。
image.png

Dockerネットワーク関連

Dockerには3種類のネットワークドライバが用意されている。

  • bridge
  • host
  • none

それに紐づく形で、デフォルトで3つのネットワークが用意されている。
docker network lsコマンドで表示。

$ docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
706a948510db   bridge    bridge    local
180bff57838b   host      host      local
24188df29a51   none      null      local

それぞれのネットワークの概要は以下の記事が分かりやすかった。

docker network inspectコマンドでそれぞれのネットワークの詳細を見てみると面白かった。
まずはbridge。
IPレンジとして"172.17.0.0/16"が割り当てられた仮想ネットワークであることがわかる。

Linux bridge 機能を使った、Linux 上に別ネットワークを使う方式。
Linux bridge で仮想インタフェースを作成し、そのインタフェースに対してveth でDocker コンテナと接続する方式で、Docker ホストが属するネットワークとは異なる、仮想bridge 上のネットワークにコンテナを作成し、NAT 形式で外部のノードと通信する形式です。
Docker のコンテナ作成時に--netオプションを特に何も指定しない場合は、自動的にこれが選択されたものとしてDocker は振る舞います。

$ docker network inspect bridge
[
    {
        "Name": "bridge",
        "Id": "706a948510db59c6d90f9cc0c76ba850f0289eed7883f48386117cb3ea7bdf5d",
        "Created": "2023-07-16T19:36:48.2796361+09:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.17.0.0/16",
                    "Gateway": "172.17.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {},
        "Options": {
            "com.docker.network.bridge.default_bridge": "true",
            "com.docker.network.bridge.enable_icc": "true",
            "com.docker.network.bridge.enable_ip_masquerade": "true",
            "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
            "com.docker.network.bridge.name": "docker0",
            "com.docker.network.driver.mtu": "1500"
        },
        "Labels": {}
    }
]

続いてhost。
bridgeと違ってIPレンジを指定したりしておらず、あくまでホストのネットワーク設定に依存する。

host ネットワークは、Docker ホストと同じネットワークにスタックするドライバで、Docker ホストマシンと同じネットワークインタフェース、IP アドレスを持つようになります。

$ docker network inspect host
[
    {
        "Name": "host",
        "Id": "180bff57838b5475edffe03f6af5722163ffac917f19b561c6ee6c4c9321b35e",
        "Created": "2023-06-17T16:22:57.476293321+09:00",
        "Scope": "local",
        "Driver": "host",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": []
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {},
        "Options": {},
        "Labels": {}
    }
]

最後にnone。
書いてある内容はhostとほぼ変わらず、Driverの値だけ違う。

none ネットワークはnull なネットワークドライバの実装です。
ネットワーク接続を必要としないコンテナを作成する場合に使用されます。

$ docker network inspect none
[
    {
        "Name": "none",
        "Id": "24188df29a518750d082a267cd419f7159c0c31a8da14c85ab81bad218fe181e",
        "Created": "2023-06-17T16:22:57.459513915+09:00",
        "Scope": "local",
        "Driver": "null",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": []
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {},
        "Options": {},
        "Labels": {}
    }
]

Dockerネットワーク操作系のコマンドは以下記事がまとめっていた。

終わりに

今回はDockerコンテナ、ネットワーク周りのコマンドを扱いました。
次回は満を持してDockerfileを触ってみようかなと思います。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?