Ubuntu Dockerコンテナでifconfigが利用できないのはなぜですか?


64

base ubuntu:12.04ではifconfig、コンテナでは使用できませんが、ipコマンドは使用できますが、これはなぜですか?そして、ifconfigコンテナに入れる方法は?



私はそれifconfigがどういうわけか廃止されることを知っていますが、いくつかのプログラムはまだそれに依存しています。
Pellaeon 14

3
開発者はまだ生きていますか?これは数年前に廃止されました。
マイケルハンプトン

ip現在のバージョンのソフトウェアで使用する場合、バグがあります。問題の簡単な回避策が必要です。
Pellaeon 14

1
「いくつかのプログラム」と「バグがあります」:もっと具体的にできますか?
マークワーグナー14

回答:


95

ifconfigはでインストールできapt-get install net-toolsます。(具体的には、RUN apt-get install -y net-toolsDockerfileに追加します。)

私のテストに基づいて、ifconfigはubuntu:14.04に含まれています。


6
それでもなぜデフォルトで含まれていないのか不思議に思われますが、このコンテナのポイントは、可能な限り最小限であり、まだ機能していることです。
イグアナノー

5
別の補遺-Ubuntuコンテナーの新しいインスタンスでは、パッケージリストも設定されていないため、まだ実行しsudo apt-get updateていない場合は実行する必要があります。
イグアナノー

1
ifconfigはに含まれていませんubuntu:16:04
JamesThomasMoon1979

11
@Iguananautに答えるには:Ubuntu VMは500MB以上ですが、Ubuntu Dockerイメージは100MB未満です。コンテナーイメージを作成する人は、基本的な必要なものだけを内部に保持するために、どのパッケージ/バイナリを含めるべきか、また含めないべきかについて線を引く必要があります。あなたはプロセスなどの容器を考える場合、このすべては、より理にかなって、と「分離コンピューティング環境は、内側と約プレイするには」ないとして、知っている
Rushiアグラワル

13

net-toolsをインストールできる場合を除き、デフォルトで提供する必要はありません。また、IPアドレスを表示する場合は、docker自体で使用可能な別のコマンドがあります。

docker inspect <container_name or container_id>

Docker検査構文:docker inspect [OPTIONS] NAME|ID [NAME|ID...]

このcmdは、IPアドレスを含む実行中のコンテナーのすべての詳細を表示します。


4

私もこの迷惑につまずきましたが、Devendraがdocker inspectで書いたように、コンテナなしでコンテナに関するすべての詳細を取得できますnet-tools。私の場合、コンテナのIPが必要でした。IPを抽出するには、次を使用できます。

docker inspect <container-id> \
  | grep "\"IPAddress\"" -m 1 \
  | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}'

さらに短い表記を編集して、コンテナのIPを取得します(dockerの検査例を参照)。

docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <container-id-or-name>

ただし、OPが要求したように、これはコンテナ内では機能しません。
ジェラルドシュナイダー

あなたが正しい。便利なヒントのように思えますが、私はOPがコンテナのIPを探すことも考えていると思いました。
従わ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.