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.