docker run 우분투 / bin / bash vs docker run 우분투


15

도커 버전 17.06.0-ce

비디오 코스를 보면서 Docker를 공부하고 있습니다.

강사는 다음을 보여줍니다.

sudo docker run -ti ubuntu /bin/bash

이미지 우분투로 도커를 실행하십시오. 그리고 나를 괴롭히는 것은 /bin/bash\입니다. man docker run그것이 /bin/bash명령 임을 보여줍니다 . 그렇습니다 docker run IMAGE [COMMAND]. 그래, 괜찮아 그러나 차이점은 무엇입니까

sudo docker run -ti ubuntu 

sudo docker run -ti ubuntu /bin/bash

나를 위해 아무도 없습니다. 그리고 강사는 명령에주의를 기울이지 않습니다. 그는 우리가 단지 도커를 운영하고 있다고 말했다. 이 과정에서 그의 첫 번째 명령이었습니다. 그리고 그는 우리가 호스트 머신으로부터 격리되어 있음을 보여주었습니다.

나는 확인했다 :

$ sudo docker run -ti ubuntu
root@aaf7cd26fe18:/# echo $SHELL
/bin/bash


$ sudo docker run -ti ubuntu /bin/bash
root@6b2570958216:/# echo $SHELL
/bin/bash

글쎄, 나는이 /bin/bash부분을 ​​쓰레기로 버려두 기로 결정했다 .

어쨌든 나는 당신에게 물어보기로 결정했습니다 : 어쩌면 Docker를 실행하는 두 가지 방법 사이에 약간의 차이가 있습니까? 있다면 무엇입니까?

답변:


11

Docker 이미지는 Dockerfile CMD지시문을 사용하여 기본적으로 특정 명령이 실행되도록 지정할 수 있습니다 . 과:

사용자가 인수를 지정하면에 지정된 docker run기본값보다 우선합니다 CMD.

우분투 Dockerfile에 지정된 기본 명령 은 실제로 bash입니다.

CMD ["/bin/bash"]

따라서 우분투 이미지의 특정 경우와 docker run ... ubuntu /bin/bash다릅니다 docker run ... ubuntu.

물론 이것은 항상 사실 일 필요는 없습니다. 데이터베이스 엔진의 Dockerfile은 기본적으로 데이터베이스 명령을 실행할 수 있습니다. 이 경우 대화식 쉘이 필요한 경우을 수행해야합니다 docker run ... /bin/bash.

일반적으로 docker run대화식 쉘을 제공 한다고 가정 할 수 없습니다 . /bin/bash쉘이 필요한지 지정 하는 것이 더 안전합니다 .


2

당신이 경우에 명령을 제공하지 않을 때 /bin/bash사용하는 동안, -ti( i대화 형 t단자)를 사용하여 때 실행되도록 정의 된 기본 프로그램에 첨부됩니다 run에 명령을 DockerFile.

예를 들어 이미지가 포 그라운드에서 웹 서버를 실행하는 경우 웹 서버를 사용 run하지 않고 사용 /bin/bash하면 웹 서버의 로그 (실행 된 기본 프로그램)가 표시됩니다.

명령을 지정하는 동안,이 "명령"을 실행하여 이미지에서 무슨 일이 일어나고 있는지 또는 실행중인 것을 신경 쓰지 않는다는 대화식 터미널을 제공합니다.

우분투에서 기본 명령은 bash당신이 제공하지 않으면 -ti컨테이너는 실행 직후 중지됩니다. 비 대화식 모드에서 bash를 실행했기 때문에 컨테이너가 더 이상 할 일이 없습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.