내 우분투 도커 이미지에 "ifconfig"명령을 설치하는 방법은 무엇입니까?


84

방금 우분투 도커 이미지를 설치했습니다. "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에서의 설치에 대해 질문 할 수 있습니까? 프로그래머가 일반적으로 사용하는 소프트웨어 도구에 대한 질문은 소프트웨어 개발 고유의 실용적이고 대답 가능한 문제
Trenton McKinney

답변:


178

새로운 우분투 도커 이미지에서

apt-get update
apt-get install net-tools

도커 컨테이너에 로그인하여 실행하거나 도커 파일에 추가하여 동일한 이미지를 빌드 할 수 있습니다.


7
net-tools는 이제 더 이상 사용되지 않습니다. 대체 : iproute2는 net-tools (ifconfig, route, arp 등)를 대체 한 Linux 네트워킹 툴킷입니다. baturin.org/docs/iproute2 를 참조하고 lwn.net/Articles/710533
Scott Stensland

11

다음을 고려할 수도 있습니다.

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

( Contango 의견 : apt-get update저장소 누락 으로 인한 오류를 방지 하려면 먼저를 실행해야 합니다).

"참조 IP와 ifconfig를 교체 "

대체 된 명령으로 진행하는 것이 가장 자주 권장됩니다 ifconfig. 이 명령은 ip이며 오래된 ifconfig.

그러나 같은 "에서 볼 호스트에서 부두 노동자 컨테이너의 IP 주소 가져 오기 사용" docker inspect사용 사례에 따라 더 유용 할 수 있습니다.


1
먼저 실행해야합니다 apt-get update(저장소 누락으로 인한 오류 방지).
Contango

1
@Contango 감사합니다. 더 많은 가시성을 위해 답변에 귀하의 의견을 포함했습니다.
VonC

RUN apt-get update && apt-get install -y iputils-ping아니 ip-utils-ping 적어도 그게 나를 위해 작동하는 방법이다.
Chase

@Chase 감사합니다. 그에 따라 답변을 편집했습니다.
VonC

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

Ubuntu Docker 이미지 747cb2d60bbe에서 작동하지 않습니다. ifconfig그것은 또한 작동하지 않습니다.
shimatai

2

Dockerfile 내에서 다음과 같은 트릭을 수행해야합니다.

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

메모리에서 업데이트와 패키지 설치 행을 결합하여도 커가 업데이트 단계를 캐싱하지 못해 오래된 패키지가 설치되는 것을 방지하는 것이 가장 좋습니다.

CLI 또는 쉘 스크립트를 통해 설치 :

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


2

컨테이너에서 ifconfig를 사용하여 IPAaddress를 찾으려고했는데 ifconfig가 없었기 때문에 여기에 왔습니다. 컨테이너에 ifconfig가 정말로 필요한 경우 위의 @ vishnu-narayanan 답변으로 가십시오. 그러나 호스트에서 docker inspect를 사용하여 필요한 정보를 얻을 수 있습니다.

docker inspect <containerid>

컨테이너의 IPAddress를 포함하여 출력에 좋은 내용이 많이 있습니다.

"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'를 인식하지 못하는 경우 호스트에서 Ubuntu Docker 이미지를 열어야합니다.

호스트 PC에 이미도 커가 있고 도커 이미지에서 우분투를 가져 온다고 가정합니다. 호스트 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에서 도커 이미지를 다시 열면 이제 사용할 수있는 ifconfig 명령과 컨테이너에 추가 한 다른 도구 또는 서비스가 있어야합니다.

즐겨!


-1

sudo apt-get install iproute2 다음 실행 ip addr show

효과가있다..


2
안녕하세요, Stack Overflow에 오신 것을 환영합니다. 이것은 매우 인기있는 답변을 가진 오래된 질문이므로 기존 답변이 제공하지 않는 내용을 설명하도록 답변을 편집하십시오. 감사.
MandyShaw
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.