우분투를 실행하는 Docker 컨테이너가 있는데 다음과 같이했습니다.
docker run -it ubuntu /bin/bash
그러나 그것은없는 것 같습니다 ping
. 예 :
bash: ping: command not found
설치해야합니까?
꽤 기본적인 명령이 누락 된 것 같습니다. whereis 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 이미지를 만드는 모범 사례가 있습니다.
Temporary failure resolving 'security.ubuntu.com'
네트워킹이 없기 때문에 apt-get이 실패합니다 .
이것은 우분투의 부두 노동자 허브 페이지이며, 이 그것을 만드는 방법입니다. 최소한의 패키지 만 설치되어 있으므로 추가 항목이 필요한 경우 직접 설치해야합니다.
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
합니다.
echo -e
실제로 POSIX sh 표준을 무시하여-e
출력에 인쇄하는 것 외에는 아무것도 할 수 없습니다 . (일부 버전의 bash에서도 기본 동작입니다). printf
대신 :을 사용 printf '%s\n' "FROM ubuntu" "RUN apt-get update && apt-get install -y iputils-ping" "CMD bash"
하고 위에 링크 된 표준 문서의 애플리케이션 사용 섹션을 참조하십시오.
echo -e
POSIX 모드 --enable-xpg-echo-default
에서 또는 적절한 환경 변수 또는 기타 런타임 구성으로 컴파일 된 경우 예상 한 방식을 지원하지 않지만 대신 표준 호환 동작을 갖습니다 .
-n
첫 번째 인수로 제공되거나 백 슬래시 리터럴이있을 때 에코가 구현 정의 방식으로 작동 할 수 있습니다. 그러나 표준 보증이 아닌 구현 정의 방식 이므로 동작은 개별 쉘에 따라 다릅니다. 사용).
일반적으로 사람들은 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
apt-get iputils-ping
필요한 이미지를 원합니다 .
이런 종류의 오류가 발생할 때마다
bash: <command>: command not found
해당 솔루션으로 이미 작업중인 해당 명령이있는 호스트에서 :
dpkg -S $(which <command>)
해당 패키지가 설치된 호스트가 없습니까? 이것을 시도하십시오 :
apt-file search /bin/<command>