300x250

docker를 사용해보면서 헷갈리는 명령어들을 정리해보고자 한다.

 

맥의 터미널이나 윈도우즈의 cmd를 통해 다음 명령어들을 사용하여 도커 컨테이너를 효율적으로 관리해줄 수 있다.

어떤 때에 어떤 명령어를 사용해야 하는지 알아보자.

 

 

 

 

1. 컨테이너 조회

 

docker ps

 

현재 실행중인 컨테이너에 대한 간략한 설명을 출력해볼 수 있다.

 

docker ps

 

추가적으로, 이미지 파일 조회는 다음 명령어로 할 수 있다.

docker images

 

 

 

 

1) -a 옵션

 

docker ps -a

 

중지된 것까지 모든 컨테이너를 출력한다. (나는 현재 openAI라는 컨테이너 하나가 전부이므로 하나만 출력된다.)

 

docker ps -a

 

 

 

 

 

2. 컨테이너 실행(생성)

 

영어로 run이 '실행'이라는 의미이지만, 사실상 컨테이너를 생성하는 명령어라고 보면 된다. 특히 옵션이 많고 복잡하므로, 잘 알아두자.

먼저 기본 포맷은 다음과 같다.

docker run <옵션> <이미지> <명령어> <인자>

 

 

 

 

1) -d 옵션

 

docker run -d <이미지파일> <명령어>

 

컨테이너를 백그라운드에서 실행해야하는 경우가 종종 있다. 이때 -d 옵션을 사용하는데, 컨테이너가 detached 모드에서 실행되며, 실행 결과로 컨테이너 ID만 출력한다.

백그라운드로 실행하지 않는 경우, 터미널에서 빠져나오는 순간 컨테이너가 종료된다.

 

 

 

 

2) -it 옵션

 

docker run -it <이미지파일>

 

-it 옵션은 '-i' 옵션과 '-t' 옵션을 같이 실행한다. 두 옵션은 컨테이너를 종료하지 않은 채로 터미널의 입력을 계속해서 컨테이너로 전달하기 위해 사용된다. 즉, 터미널이나 cmd와 같은 CLI 도구(또는 shell)를 사용할 때 유용하다.

'-i' 옵션은 표준 입력(stdin)을 활성화하며, 컨테이너와 연결되어있지 않아도 표준 입력을 유지해주는 역할을 하여 Bash에 명령을 입력하도록 하고, '-t' 옵션은 TTY 모드를 사용하여 Bash를 사용할 수 있도록 한다. '-t' 옵션이 없으면 명령을 입력할 수는 있지만, shell이 표시되지 않는다.

 

 

 

 

3) --name 옵션

 

docker run --name <컨테이너이름> <이미지파일>

 

컨테이너의 이름을 지정해줄 때 사용한다. 컨테이너를 생성할 시 ID는 자동으로 생성이 되는데, 읽거나 기억하기 어려워서 불편하다.

따라서 컨테이너의 이름을 지정하여 식별이 용이하도록 하고, 컨테이너 시작 및 종료 등의 다른 제어 시에 유용하게 사용할 수 있다.

 

 

 

 

4) -e 옵션

 

docker run -e <환경변수세팅> <이미지파일>

 

Docker 컨테이너의 환경변수를 설정하기 위해 '-e'옵션을 사용할 수 있다. 이 옵션을 사용하면 Dockerfile의 env 설정도 덮어쓰게 된다.

예를 들어, GRANT_SUDO=yes로 환경변수를 세팅하게 되면, 생성한 컨테이너 내에서 sudo 권한을 통해 작업을 할 수 있게 된다.

 

 

 

 

5) -p 옵션

 

docker run -p <호스트의 포트번호>:<컨테이너의 포트번호> <이미지파일>

 

'-p'옵션은 호스트 컴퓨터에서 컨테이너에서 설정한 포트로 접속할 수 있도록 해준다.

Docker의 컨테이너는 기본적으로 외부에서 접근할 수 없다. 하지만 '-p' 옵션으로 호스트의 포트와 컨테이너의 포트를 바인딩하여 외부에서 접근 가능하도록 만들어줄 수 있다.

 

예를 들어 아래와 같이 옵션을 사용한다면

docker run -p 3306:3306 -p 192.168.0.100:7777:80 <이미지파일>

 

호스트의 3306번 포트와 192.168.0.100 포트를 각각 컨테이너의 3306번 포트와 80번 포트에 연결하고 외부에 노출시킨다.

이렇게 설정하면 http://<호스트 IP>:80에 접속하면 컨테이너의 90번 포트로 접속할 수 있다.

 

 

 

 

6) -v 옵션

 

docker run -v <호스트 컴퓨터의 directory>:<마운트할 directory> <이미지파일>

 

'-v'옵션은 호스트와 컨테이너 간 볼륨을 설정해준다. 호스트 컴퓨터의 특정 경로를 컨테이너 파일 시스템의 특정 경로로 마운트시키는 것이다.

예를 들어 다음과 같은 명령어를 실행시킨다면

docker run -v 'pwd':/root/test <이미지파일>

호스트 컴퓨터의 현재 directory를 컨테이너의 '/root/test' 경로로 마운트해준다.

 

 

 

 

7) -w 옵션

 

docker run -w <WORKDIR> <이미지파일>

 

'-w'옵션은 Dockerfile의 작업 디렉토리 설정을 덮어쓰기 위해 사용한다.

 

 

 

 

8) --rm 옵션

 

docker run --rm <이미지파일>

 

'--rm'옵션은 컨테이너를 일회성으로 실행할 때 사용한다. 컨테이너가 종료되면 컨테이너와 관련된 리소스들이 모두 제거된다.

 

 

 

 

 

3. 컨테이너 시작

 

docker start <컨테이너ID 또는 이름>

 

'start' 명령어는 중지된 Docker Container를 시작하기 위해 사용한다. 컨테이너의 아이디를 사용할 수도, 이름을 사용할 수도 있다.

 

 

 

 

 

4. 컨테이너 중지

 

docker stop <컨테이너ID 또는 이름>

 

'stop' 명령어는 실행 중인 Docker Container를 중지하기 위해 사용한다. 중지하고싶은 아이디나 이름을 인자로 넘기면 된다.

 

 

 

 

 

5. 컨테이너 삭제

 

docker rm <컨테이너ID>

 

특정 컨테이너를 삭제한다. 정확한 정보를 위해 이름보다는 ID를 사용하여 한 번 더 확인하고 삭제하는 것을 추천한다.

 

 

 

 

 

5. Docker CLI 실행 (컨테이너 상대로 명령어 실행)

 

실행 중인 컨테이너 상대로 명령어를 입력해주고 싶을 때 사용한다. CLI 상에서 컨테이너 내부에 git을 설치하는 등의 작업을 가능하게 해준다.

터미널 또는 cmd에서 실행시키거나 Docker App을 사용하여 실행할 수 있다.

 

 

 

 

1) 터미널(cmd)에서 실행

 

우선, 'docker start' 먼저 해준 상태에서,

docker exec -it <컨테이너ID 또는 이름> /bin/bash

 

보통 위와 같이 '-it' 옵션과 함께 사용된다.

터미널과 같이 bash 환경에서 컨테이너를 실행할 수 있으며, 여러 터미널(외부)에서 컨테이너에 접속이 가능하다. 'docker attach'의 경우에는 다른 터미널에서 똑같이 docker attach로 접근할 수 없다. (자세한 건 구글링해보자!)

 

예를 들어, 간단히 openAI 컨테이너의 파일 리스트를 출력하는 'ls' 커맨드를 실행하고 싶다면,

 

 

위와 같이 실행해줄 수 있다.

 

 

 

2) Docker App에서 실행

 

간단하게 Docker App에서 실행해줄 수도 있다.

 

 

터미널에서 실행하였던 예시를 실행하면 다음과 같은 결과를 나타낸다.

 

 

'docker exec -it <openAI 컨테이너의 ID>' 부분 까지는 자동으로 실행된 것이며,

실행하고자 하는 명령어를 # 뒤에 입력해주면 된다.

 

 

 

 

 

6. jupyter notebook 토큰 확인

 

맨 처음 'docker run'을 통해 컨테이너를 생성하면 jupyter notebook을 사용할 수 있는 링크와 토큰을 알려준다.

하지만 언제나 이 토큰까지 기억을 하고 있을 수 없으므로, 이후에 토큰을 어떻게 확인하는지 알아보자.

 

먼저, 'docker exec -it ...' 명령어 또는 Docker App을 통해 CLI를 실행한다.

 

그 후 아래 명령어를 이용하여 token을 확인할 수 있다.

jupyter notebook list

 

결과

 

 

728x90
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기