HOWTO · Docker

새 Docker 컨테이너에서 Bash 터미널을 시작하는 방법

이 자습서에서는 새 Docker 컨테이너에서 bash 터미널을 시작하는 방법을 보여줍니다.

이 페이지의 내용

Docker 컨테이너에서 Bash를 열려면 컨테이너의 상태에 따라 명령을 선택합니다. 대화형 Bash 세션으로 새 컨테이너를 시작하려면 docker run -it IMAGE bash를 사용합니다. 이미 실행 중인 컨테이너에서 별도의 Bash 세션을 시작하려면 docker exec -it CONTAINER bash를 사용합니다. docker attach CONTAINER는 터미널을 컨테이너의 메인 프로세스에 연결하려는 경우에만 사용합니다. 다른 셸을 시작하지는 않습니다.

IMAGE는 Docker에서 사용할 수 있고 Bash를 포함하는 이미지로 바꿉니다. CONTAINER는 실행 중인 컨테이너의 이름이나 ID로 바꿉니다. 아래 명령은 구문 템플릿입니다. 자리 표시자는 반드시 바꿔야 하며, 실행된 출력으로 표시되는 것이 아닙니다.

Bash 대화형 셸 사용

새 컨테이너와 그 안에서의 대화형 Bash 프롬프트가 필요하면 docker run -it IMAGE bash를 사용합니다. -i 옵션은 표준 입력을 열어 두고, -t는 터미널을 할당하여 세션이 대화형 명령줄처럼 동작하게 합니다. bash는 Docker가 새 컨테이너 안에서 시작하는 명령입니다.

예를 들어 docker run -it IMAGE bash에서 IMAGE를 이미지 이름으로 바꿉니다. 이미지에는 Bash가 포함되어 있어야 합니다. 최소 이미지에서는 sh나 다른 셸만 제공될 수 있습니다. 이 명령은 컨테이너를 만들고 시작하므로, 이미 존재하는 컨테이너에서 셸을 여는 것과는 다릅니다. 중지된 컨테이너를 재사용하려면 먼저 그 컨테이너를 시작하고, 실행 상태가 된 후 docker exec를 사용합니다.

docker exec 명령 사용

이미 실행 중인 컨테이너에서 Bash를 새 프로세스로 시작하려면 docker exec -it CONTAINER bash를 사용합니다. docker exec는 중지된 컨테이너를 시작하지 않습니다. 실행 중인 컨테이너의 이름과 ID를 찾으려면 docker ps를 사용하고, 중지된 컨테이너도 확인해야 할 때는 docker ps -a를 사용합니다. 원하는 중지된 컨테이너를 docker start CONTAINER로 시작한 뒤 docker exec 명령을 실행합니다.

이미지에 Bash가 설치되어 있지 않다면, 이미지에서 sh를 제공하면 docker exec -it CONTAINER sh를 사용해 봅니다. 셸 명령은 컨테이너 안에 존재해야 합니다. 두 가지 docker exec 형식 모두 별도의 대화형 프로세스를 만들므로, 컨테이너의 메인 프로세스가 계속 실행되는 동안 검사나 문제 해결에 유용합니다.

docker attach 명령 사용

실행 중인 컨테이너의 메인 프로세스에 터미널의 입력 및 출력 스트림을 연결하려면 docker attach CONTAINER를 사용합니다. 그 프로세스가 이미 필요한 대화형 세션을 제공하고 있을 때 유용합니다. 예를 들어 컨테이너가 셸을 메인 프로세스로 시작되었다면 attach는 그 프로세스에 다시 연결합니다.

Attach는 Bash나 다른 새 명령을 실행하지 않습니다. 컨테이너의 메인 프로세스가 애플리케이션이라면 attach는 그 애플리케이션의 스트림에 연결합니다. 별도의 셸 프롬프트를 제공하지는 않습니다. 메인 프로세스와 함께 셸을 실행해야 할 때는 docker exec -it CONTAINER bash(또는 사용 가능하면 sh)를 선택합니다. 요약하면, docker run은 새 컨테이너를 시작하고, docker exec는 실행 중인 컨테이너에서 명령을 시작하며, docker attach는 기존 메인 프로세스에 연결합니다.