[ubuntu] Docker-Ubuntu-bash : ping : 명령을 찾을 수 없습니다

우분투를 실행하는 Docker 컨테이너가 있는데 다음과 같이했습니다.

docker run -it ubuntu /bin/bash

그러나 그것은없는 것 같습니다 ping. 예 :

bash: ping: command not found

설치해야합니까?

꽤 기본적인 명령이 누락 된 것 같습니다. whereis ping아무것도보고하지 않는 것을 시도했습니다 .



답변

도커 이미지는 매우 ping작지만 다음을 통해 공식 우분투 도커 이미지에 설치할 수 있습니다 .

apt-get update
apt-get install iputils-ping

ping이미지 가 필요하지 않고 테스트 목적으로 이미지를 사용하고 싶을 수도 있습니다. 위의 예가 도움이 될 것입니다.

당신이 당신의 이미지에 존재하는 핑 (ping) 필요하다면, 당신은을 만들 수 있습니다 Dockerfile또는 commit컨테이너가 새 이미지에 위의 명령을 실행했습니다.

범하다:

docker commit -m "Installed iputils-ping" --author "Your Name <name@domain.com>" ContainerNameOrId yourrepository/imagename:tag

도커 파일 :

FROM ubuntu
RUN apt-get update && apt-get install -y iputils-ping
CMD bash

다음에 apt 캐시 파일을 지우는 것과 같이 docker 이미지를 만드는 모범 사례가 있습니다.


답변

이것은 우분투의 부두 노동자 허브 페이지이며, 그것을 만드는 방법입니다. 최소한의 패키지 만 설치되어 있으므로 추가 항목이 필요한 경우 직접 설치해야합니다.

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

그러나 일반적으로 “Dockerfile”을 작성하고 빌드합니다.

mkdir ubuntu_with_ping
cat >ubuntu_with_ping/Dockerfile <<'EOF'
FROM ubuntu
RUN apt-get update && apt-get install -y iputils-ping
CMD bash
EOF
docker build -t ubuntu_with_ping ubuntu_with_ping
docker run -it ubuntu_with_ping

Google을 사용하여 자습서를 찾고 기존 Dockerfile을 탐색하여 일반적으로 어떻게 작동하는지 확인하십시오. 예를 들어 명령 apt-get clean && rm -rf /var/lib/apt/lists/*후 실행하여 이미지 크기를 최소화해야 apt-get install합니다.


답변

일반적으로 사람들은 Ubuntu / CentOS의 공식 이미지를 가져 오지만 이러한 이미지가 최소이며 그 위에 아무것도 없다는 것을 인식하지 못합니다.

우분투의 경우이 이미지는 Canonical에서 제공하는 공식 rootfs tarballs에서 빌드됩니다. Ubuntu의 최소 설치이므로이 이미지에는 기본적으로 C, C.UTF-8 및 POSIX 로켈 만 포함됩니다.

하나는 net-tools (ifconfig, netstat 포함), ip-utils (ping 포함) 및 기타 좋아하는 curl 등을 컨테이너에 설치하고 컨테이너에서 이미지를 만들거나 이미지를 만드는 동안 이러한 도구를 설치하는 Dockerfile을 작성할 수 있습니다.

아래는 Dockerfile 예제이며 이미지를 생성하는 동안 다음 도구가 포함됩니다.

FROM vkitpro/ubuntu16.04
RUN     apt-get  update -y \
&& apt-get upgrade -y \
&& apt-get install iputils-ping -y \
&& apt-get install net-tools -y \
CMD bash

또는 기본 이미지에서 컨테이너를 시작하고 컨테이너에 이러한 유틸리티를 설치 한 다음 이미지를 커밋합니다. docker commit -m “설명 메시지”container_id image_name : lattest

이 이미지에는 모든 것이 설치됩니다.


답변

또는 busybox와 같이 이미 ping이 설치된 Docker 이미지를 사용할 수 있습니다 .

docker run --rm busybox ping SERVER_NAME -c 2


답변

이런 종류의 오류가 발생할 때마다

bash: <command>: command not found
  • 해당 솔루션으로 이미 작업중인 해당 명령이있는 호스트에서 :

    dpkg -S $(which <command>)
    
  • 해당 패키지가 설치된 호스트가 없습니까? 이것을 시도하십시오 :

    apt-file search /bin/<command>
    

답변

때로는 Docker에서 Linux를 최소 설치해도 경로가 정의되지 않으므로 …을 사용하여 ping을 호출해야합니다.

cd /usr/sbin
ping <ip>


답변

데비안 10에서 아래 문장을 사용했습니다.

apt-get install iputils-ping