도커 이미지의 새 컨테이너에서 bash를 실행하려면 어떻게 해야 합니까?
도커/고래 이미지로 작성된 컨테이너에서 임의의 셸 명령을 실행할 수 있습니다.
$ docker run docker/whalesay ls -l
total 56
-rw-r--r-- 1 root root 931 May 25 2015 ChangeLog
-rw-r--r-- 1 root root 385 May 25 2015 INSTALL
-rw-r--r-- 1 root root 1116 May 25 2015 LICENSE
-rw-r--r-- 1 root root 445 May 25 2015 MANIFEST
-rw-r--r-- 1 root root 1610 May 25 2015 README
-rw-r--r-- 1 root root 879 May 25 2015 Wrap.pm.diff
drwxr-xr-x 2 root root 4096 May 25 2015 cows
-rwxr-xr-x 1 root root 4129 May 25 2015 cowsay
-rw-r--r-- 1 root root 4690 May 25 2015 cowsay.1
-rw-r--r-- 1 root root 54 May 25 2015 install.pl
-rwxr-xr-x 1 root root 2046 May 25 2015 install.sh
-rw-r--r-- 1 root root 631 May 25 2015 pgp_public_key.txt
$ docker run docker/whalesay lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 14.04.2 LTS
Release: 14.04
Codename: trusty
그러나 이 이미지에서 작성한 컨테이너에서는 셸을 실행할 수 없습니다.
$ docker run docker/whalesay bash
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7ce600cc9904 docker/whalesay "bash" 5 seconds ago Exited (0) 3 seconds ago loving_mayer
왜 안 되는 거죠?어떻게 하면 될까요?
네가 만약docker run
tty를 접속하지 않고, 콜만bash
그러면 bash는 할 일을 찾지 못하고 종료됩니다.그 이유는 기본적으로 컨테이너는 비인터랙티브이며 비인터랙티브모드로 실행되는 셸에서는 스크립트가 실행되어야 하기 때문입니다.그것이 없으면, 그것은 종료됩니다.
일회용 새 용기를 실행하려면 tty 및 표준 입력을 부착하기만 하면 됩니다.
docker run --rm -it --entrypoint bash <image-name-or-id>
또는 위의 컨테이너가 폐기되는 것을 방지하기 위해,--rm
.
또는 실행 중인 컨테이너를 입력하려면exec
대신:
docker exec -it <container-name-or-id> bash
문의하신 코멘트
이거랑 뭐가 다른 줄 알아?
docker run -it --entrypoint bash docker/whalesay
?
위의 두 명령어에서는 다음과 같이 지정합니다.bash
처럼CMD
이 명령어에서는 다음과 같이 지정합니다.bash
처럼ENTRYPOINT
.
모든 컨테이너는 다음 조합을 사용하여 실행됩니다.ENTRYPOINT
그리고.CMD
. 사용자(또는 이미지)가 다음을 지정하지 않은 경우ENTRYPOINT
기본 엔트리 포인트는 다음과 같습니다./bin/sh -c
.
앞의 두 명령어에서는bash
처럼CMD
, 및 디폴트ENTRYPOINT
사용되는 컨테이너는 다음 명령을 사용하여 실행됩니다.
/bin/sh -c bash
지정한 경우--entrypoint bash
대신 실행됩니다.
bash <command>
어디에<command>
는CMD
(지정되어 있는 경우).
언급URL : https://stackoverflow.com/questions/43308319/how-can-i-run-bash-in-a-new-container-of-a-docker-image
'source' 카테고리의 다른 글
ItemsControl의 항목 사이에 구분 기호를 추가하는 방법 (0) | 2023.04.17 |
---|---|
팀에 대한 iTunes Connect 액세스 권한이 있는 계정을 찾을 수 없습니다. (0) | 2023.04.17 |
데이터베이스에 대한 모든 연결을 끊는 스크립트(RESTRICTED_USER Rollback 이상) (0) | 2023.04.17 |
실행 중인 cmdlet의 현재 디렉토리를 가져오는 방법 (0) | 2023.04.17 |
bash에서 바이너리로 파일을 표시하는 방법 (0) | 2023.04.17 |