ubuntu dockerイメージに「ifconfig」コマンドをインストールするにはどうすればよいですか?


84

ubuntu docker imageをインストールしました。「ifconfig」を実行すると、そのようなコマンドがないと表示されます。「ifconfig」という名前のパッケージがないため、apt-get installを試しました(他のイメージをインストールできます)。

では、これを行う方法は?ありがとう。


3
serverfault.com/a/614972 -あなたのDockerfile内RUN apt-get install -y net-tools
ブライアン・

1
iproute2は、net-tools(ifconfig、route、arpなど)に代わるLinuxネットワーキングツールキットです。baturin.org / docs / iproute2を参照し、lwn.net / Articles / 710533
Scott Stensland

SOへのインストールについて質問できますか?プログラマーが一般的に使用するソフトウェアツールに関する質問は、ソフトウェア開発に固有の実用的で答えられる問題で
トレントンマッキニー

回答:


178

新しいubuntudockerイメージで、

apt-get update
apt-get install net-tools

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


7
net-toolsは廃止されました...その置き換え:iproute2は、net-tools(ifconfig、route、arpなど)を置き換えたLinuxネットワーキングツールキットです。baturin.org / docs / iproute2を参照し、lwn.net / Articles / 710533
ScottStensland18年

11

次のことも検討できます。

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

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

「を参照してくださいIPでifconfigコマンドを交換します

ほとんどの場合、ifconfig。を置き換えたコマンドで先に進むことをお勧めします。そのコマンドはipであり、古いものにステップインするという素晴らしい仕事をしますifconfig

ただし、「ホストからDockerコンテナのIPアドレスを取得する」にdocker inspect示されているように、ユースケースによっては、を使用する方が便利な場合があります。


1
最初に実行する必要がありますapt-get update(リポジトリが見つからないというエラーを回避するため)。
コンタンゴ2017年

1
@コンタンゴありがとうございます。わかりやすくするために、回答にコメントを含めました。
vonC 2017年

RUN apt-get update && apt-get install -y iputils-pingない ip-utils-ping 少なくとも、それはそれは私のためにどのように動作するかです。
追跡

@チェイスありがとうございます。それに応じて回答を編集しました。
vonC 2018年

2

以下のコマンドを使用して、実行中のコンテナの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

Ubuntudockerイメージ747cb2d60bbeでは機能しません。ifconfigそれも機能していません。
shimatai 2017年

2

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

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

メモリから、更新とパッケージのインストール行を組み合わせて、Dockerが更新ステップをキャッシュして古いパッケージがインストールされるのを防ぐことをお勧めします。

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

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


2

コンテナでifconfigを使用してIPAアドレスを見つけようとしていて、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

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



0

Ubuntu DockerイメージがGNS3内の「ifconfig」を認識しない場合は、ホストでUbuntuDockerイメージを開く必要があります。

ホストPCにすでにdockerがあり、ubuntuがdockerイメージからプルされていると仮定します。これらのコマンドをホストOS(Linux、CentOSなど)のCLIに入力します。

$docker images

$docker run -it ubuntu

$apt-get update

$apt-get install net-tools

(補足:今追加したい他のツールやサービスは何でも追加できますが、今のところ、これはifconfigを機能させるためだけのものです。)

$exit

次に、これらの変更をDockerにコミットします。変更をコミットするためのこのリンクは、最良の要約であり、機能します(ステップ4にスキップ)。

https://phoenixnap.com/kb/how-to-commit-changes-to-docker-image#htoc-step-3-modify-the-container

GNS3でDockerイメージを再度開くと、ifconfigコマンドが使用可能になり、コンテナーに追加したその他のツールやサービスがすべて表示されます。

楽しい!


-1

sudo apt-get install iproute2 then run ip addr show

できます..


2
こんにちは、StackOverflowへようこそ。これは非常に人気のある受け入れられた回答を持つ古い質問なので、既存の回答にはないものを説明するために回答を編集してください。ありがとう。
MandyShaw
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.