Ubuntu Docker 컨테이너에서 ifconfig를 사용할 수없는 이유는 무엇입니까?


64

기본으로 ubuntu:12.04, ifconfig불구하고, 컨테이너에 사용할 수없는 ip명령을 사용할 수,이 이유는? 그리고 ifconfig컨테이너에 넣는 방법?



나는 그것이 ifconfig어떻게 든 사용되지 않는다는 것을 알고 있지만 일부 프로그램은 여전히 ​​그것에 의존합니다.
Pellaeon

3
개발자는 여전히 살아 있습니까? 이것은 몇 년 전에 더 이상 사용되지 않습니다.
마이클 햄튼

ip현재 버전의 소프트웨어에서 사용할 때 버그 가 있습니다. 문제에 대한 빠른 해결 방법이 필요합니다.
Pellaeon

1
"일부 프로그램"과 "버그가 있습니다": 좀 더 구체적으로 할 수 있습니까?
Mark Wagner

답변:


95

로 ifconfig를 설치할 수 있습니다 apt-get install net-tools. (특히, RUN apt-get install -y net-toolsDockerfile 에 추가 하여)

내 테스트를 기반으로 ifconfig가 우분투 : 14.04에 포함되어 있습니다.


6
여전히 기본적으로 포함되지 않은 이유를 궁금해하지만이 컨테이너의 요점은 가능한 한 최소한으로 작동한다는 것입니다.
Iguananaut

5
우분투 컨테이너의 새로운 인스턴스에 대한 또 다른 부록-패키지 목록도 채워 sudo apt-get update지지 않으므로 아직 실행 하지 않은 경우 실행해야합니다 .
이구아나 노트

1
ifconfig에 포함되어 있지 않습니다 ubuntu:16:04.
JamesThomasMoon1979

11
@Iguananaut 답변 : Ubuntu VM은 500MB 이상인 반면 Ubuntu Docker 이미지는 100MB 미만입니다. 컨테이너 이미지를 만드는 사람들은 기본 필수 사항 만 내부에 유지하기 위해 포함해야 할 패키지 / 바이너리와 그렇지 않은 것에 대해 선을 그어야합니다. 컨테이너를 프로세스로 생각하고 '내부에서 즐길 수있는 격리 된 컴퓨팅 환경'이 아니라고 생각한다면이 모든 것이 더 의미가 있습니다.
Rushi Agrawal

13

net-tools를 설치하기 전까지는 기본적으로 제공 할 필요가 없습니다. 또한 IP 주소를 보려면 docker 자체에서 사용할 수있는 다른 명령이 있습니다.

docker inspect <container_name or container_id>

도커 검사 구문 :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 inspect 예제 참조 ).

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.