지금부터 Windows에서 Docker를 실행하여 기본적인 명령어에 대해 알아보겠습니다.
Windows에서 도커를 사용하려면, 관리자 권한으로 실행한 CMD 또는 PowerShell을 이용해야 합니다.
# docker -v
Doker version 20.10.2, build 2291f61
도커 공식 이미지 저장소에서 새 이미지를 내려받고 싶다면 다음 명령어를 입력합니다.
# docker pull [이미지 이름]:[이미지 태그(버전)]
# docker pull ubuntu:20.04
만약 '이미지 태그(버전)'을 입력하지 않는다면, 가장 최신 버전(latest)으로 인식합니다.
로컬 저장소에 저장되어 있는 이미지 목록을 보고 싶다면 다음 명령어를 입력합니다.
# docker images
Ubuntu 20.04 LTS 운영체제의 새 컨테이너를 생성하고 싶다면 다음 명령어를 입력합니다.
# docker run -it ubuntu:20.04
# docker run -i -t ubuntu:20.04
만약 해당 이미지가 로컬 저장소에 없다면, 다음과 같이 나타나며 도커 공식 이미지 저장소에서 새 이미지를 다운로드 받아 컨테이너를 생성합니다.
Unable to find image 'ubuntu:20.04' locally
20.04: Pulling from library/ubuntu
...
Status: Downloaded newer image for ubuntu:20.04
root@0589vxd8f44:/#
컨테이너를 생성하면 자동으로 컨테이너 내부로 진입하게 됩니다.
Ubuntu 20.04 LTS 운영체제의 새 컨테이너를 생성하고 싶다면 다음 명령어를 입력합니다.
# docker create [옵션] [이미지 이름]:[이미지 태그(버전)]
# docker create -it ubuntu:20.04
# docker create -i -t ubuntu:20.04
만약 컨테이너에 이름을 붙이고 싶다면 다음 명령어를 입력합니다.
# docker create [옵션] [이미지 이름]:[이미지 태그(버전)]
# docker create -it ubuntu:20.04
# docker create -i -t ubuntu:20.04
컨테이너를 생성하면 컨테이너 내부로 들어가지 않고, 컨테이너가 시작되지 않습니다.
Pull(이미지가 없을 때) -> Run
Pull(이미지가 없을 때) -> Create -> Start -> Attach
형식
# docker (run | create) [옵션] [이미지 이름]:[이미지 태그(버전)]
예제
# docker run --name container -d -v ~/data:/data/db mongo:4.4.3
--name [컨테이너 이름]
컨테이너의 이름을 직접 지정
-d
Detached 모드. 컨테이너를 백그라운드에서 동작하는 애플리케이션을 실행할 때 설정
-p [호스트 포트]:[컨테이너 포트]
호스트의 N번 포트를 컨테이너의 N번 포트와 연결 (여러 번 사용 가능)
-p [호스트 IP]:[호스트 포트]:[컨테이너 포트]
특정 바인딩 IP인 호스트의 N번 포트를 컨테이너의 N번 포트와 연결 (여러 번 사용 가능)
-v [호스트 디렉토리]:[컨테이너 디렉토리]
볼륨. 호스트의 디렉토리와 컨테이너의 디렉토리를 공유
'Create' 명령어로 생성한 컨테이너를 시작하려면 다음 명령어를 입력합니다.
# docker start [컨테이너 ID(2~4자) | 컨테이너 이름]
# docker start ubuntu_test
# docker start db93
ubuntu_test
컨테이너 내부로 진입하려면 다음 명령어를 입력합니다.
# docker attach [컨테이너 ID(2~4자) | 컨테이너 이름]
# docker attach ubuntu_test
# docker attach db93
root@db93a5a17e30:/#
현재 실행 중인 컨테이너 목록을 확인하려면 다음 명령어를 입력합니다.
# docker ps
동작 상태에 상관없이 모든 컨테이너 목록을 확인하려면 다음 명령어를 입력합니다.
# docker ps -a
컨테이너 이름을 변경하려면 다음 명령어를 입력합니다.
# docker rename [변경 전 컨테이너 이름] [변경 후 컨테이너 이름]
# docker rename ubuntu_test ubunt_test2
컨테이너를 정지하고 컨테이너 내에서 나가려면 다음 명령어를 입력합니다.
# exit
컨테이너를 실행 중인 상태에서 컨테이너 내에서 나가려면 다음 키를 입력합니다.
Ctrl + P, Q
(Ctrl 키를 계속 누른 상태에서 P 키를 누르고 Q 키를 누르기)
컨테이너를 중단하려면 다음 명령어를 입력합니다.
# docker stop [컨테이너 ID(2~4자) | 컨테이너 이름]
# docker stop ubuntu_test
docker stop db93
컨테이너를 삭제하려면 다음 명령어를 입력합니다.
# docker rm [컨테이너 ID(2~4자) | 컨테이너 이름]
# docker rm ubuntu_test
# docker rm db93
만약 실행 중인 컨테이너를 삭제하려면 해당 컨테이너를 정지한 후에 삭제가 가능합니다.
# docker stop ubuntu_test
# docker rm ubuntu_test
실행 중인 컨테이너를 강제로 삭제하려면 다음 옵션을 추가합니다.
# docker rm [옵션]* [컨테이너 ID(2~4자) | 컨테이너 이름]
# docker rm -f ubuntu_test
모든 컨테이너를 삭제하려면 다음 명령어를 입력합니다.
# docker container prune
컨테이너 ID만 출력하는 명령어를 이용하여 모든 컨테이너를 삭제하려면 다음 명령어를 입력합니다.
# docker stop $(docker ps -a -q)
# docker rm $(docker ps -a -q)