web-dev-qa-db-ja.com

私のUbuntu Dockerイメージに "ifconfig"コマンドをインストールするにはどうすればいいですか?

Ubuntu docker imageをインストールしたばかりです。 "ifconfig"を実行すると、そのようなコマンドがないことが示されます。

だからこれを行うには?ありがとう。

59
Hind Forsum

新鮮なUbuntu Dockerイメージで、以下を実行します。

apt-get update
apt-get install net-tools

これらはdockerコンテナにログインするか、これをdockerfileに追加して同じイメージを作成することで実行できます。

137

あなたも考慮することができます:

RUN apt-get update && apt-get install -y iputils-ping

Contangoのコメント として):エラーを避けるため、最初にapt-get updateを実行する必要がありますリポジトリがない場合.

ifconfigからip への置き換え」を参照してください。

ほとんどの場合、ifconfigに代わったコマンドを使用して先に進むことをお勧めします。そのコマンドはipです、そしてそれは時代遅れのifconfigのためにステップインする素晴らしい仕事をします。

しかし、 " ホストからのDockerコンテナのIPアドレスの取得 "で見られるように、docker inspectを使うことはあなたのユースケースによってはもっと役に立つかもしれません。

8
VonC

Dockerイメージを「通常の」Ubuntuインストールとして使用したい場合は、unminimizeを実行することもできます。これはifconfig以上のものをインストールするので、これはあなたが望むものではないかもしれません。

実行中のコンテナのIPアドレスを取得するには、以下のコマンドを使用してください。

$ ip addr

例:

root@4c712d05922b:/# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope Host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope Host
       valid_lft forever preferred_lft forever
247: eth0@if248: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
    link/ether 02:42:ac:11:00:06 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 172.17.0.6/16 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:acff:fe11:6/64 scope link
       valid_lft forever preferred_lft forever
1
Arvind Rawat

そのIPアドレスを見つけるためにコンテナーでifconfigを使用しようとしていて、ifconfigがなかったので、ここに来ました。あなたが本当にコンテナのifconfigが上記の@ vishnu-narayanan答えで行く必要があるなら、あなたはホスト上でdocker inspectを使うことによってあなたが必要とする情報を得ることができるかもしれません:

docker inspect <containerid>

コンテナーのIPアドレスを含む出力にはたくさんの良いものがあります。

"Networks": {
    "bridge": {
        "IPAMConfig": null,
        "Links": null,
        "Aliases": null,
        "NetworkID": "12345FAKEID",
        "EndpointID": "12345FAKEENDPOINTID",
        "Gateway": "172.17.0.1",
        "IPAddress": "172.17.0.3",
        "IPPrefixLen": 16,
        "IPv6Gateway": "",
        "GlobalIPv6Address": "",
        "GlobalIPv6PrefixLen": 0,
        "MacAddress": "01:02:03:04:05:06",
        "DriverOpts": null
    }
}
1
mancocapac

Dockerfile内からは、次のような方法でうまくいくはずです。

RUN apt-get update && \
     apt-get install -y net-tools

メモリから、dockerが更新手順をキャッシュして期限切れのパッケージがインストールされないようにするために、更新行とパッケージインストール行を組み合わせることをお勧めします。

CLIまたはシェルスクリプトを介してインストールします。

apt-get update && apt-get install net-tools

1
Brian