우분투를 실행하는 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