Windows 운영체제 기준으로 설명합니다.
명령어를 알아보기 전에 도커 엔진을 실행해야합니다. 지난 포스트에서 설치했던 Docker Desktop 앱을 실행하면 도커 엔진이 실행됩니다.
또는 다음 명령어를 사용합니다. (관리자 권한 필요)
sudo systemctl start docker
설치 과정에서 기본값으로 컴퓨터가 실행되면 백그라운드에서 도커 엔진이 실행되게 설정되어 있습니다. 이 경우는 바로 명령어를 입력할 수 있습니다.
들어가기전에 잠깐 Subcommands를 알아보고 넘어가겠습니다. 도커 명령어는 다음과 같은 구조를 가집니다.
docker subcommand command [-option] target
보시면 커맨드 앞에 서브커맨드라는 것이 붙습니다.
서브커맨드는 도커 명령어의 조작 대상, 즉 '무엇을'에 해당하는 것을 지정하는 커맨드입니다.
도커 1.13 이전 버전에서는 다음과 같이 단순하게 명령어를 사용했었습니다.
docker run
도커는 컨테이너, 이미지, 볼륨, 네트워크 등이 조작의 대상이 되기 때문에 위와 같이 표기하면 어떤 대상을 조작하게 되는지 관리하기 어려워지는 문제점이 발생하게 되었습니다.
그래서 1.13 버전부터는 Subcommands라는 개념을 도입하여 어떤 리소스에 대하여 어떤 명령이 실행되는지 알 수 있도록 했습니다.
docker container run
물론 구버전 방식도 지원하기 때문에 상위 커맨드가 없는 방식도 사용할 수 있습니다.
docker run
어떤 Subcommands들이 존재하는지 공식 문서에서 확인하실 수 있습니다.
이 포스트에서는 입문 기준으로 설명하기 때문에 자주, 대표적으로 사용되는 몇 가지만 소개드립니다.
생략형은 Subcommand를 생략한 명령어입니다. 대부분 Subcommand만 제거하면 되지만 일부 다른 형태의 생략형이 존재하기 때문에 유의해주세요.
docker container 명령어와 같은 형태로 사용합니다.
| 명령어 | 설명 | 주요 사용 옵션 | 생략형 |
|---|---|---|---|
| start | 컨테이너 실행 | -i | docker start |
| stop | 컨테이너 중지 | docker stop | |
| create | 이미지로부터 컨테이너 생성 | --name, -e, -p, -v | docker create |
| run | 이미지를 내려받고 컨테이너 생성하여 실행 | --name, -e, -p, -v, -d, -i, -t | docker run |
| rm | 정지 상태의 컨테이너 삭제 | -f, -v | docker rm |
| exec | 실행 중인 컨테이너 내부에서 프로그램 실행 | -i, -t | docker exec |
| ls | 컨테이너 목록 출력 | -a | docker ps |
| cp | 도커 컨테이너와 도커 호스트 간 파일 복사 | docker cp | |
| commit | 도커 컨테이너를 이미지로 변환 | docker commit |
docker container run은docker image pull, docker container create, docker container start세 가지 명령을 한 번에 수행하는 명령입니다.
| 명령어 | 설명 | 주요 사용 옵션 | 생략형 |
|---|---|---|---|
| pull | 외부 리포지토리로부터 이미지를 내려받음 | docker pull | |
| rm | 이미지 삭제 | docker rmi | |
| ls | 내려받은 이미지 목록 출력 | 생략 불가능 | |
| build | 도커 이미지 생성 | -t | docker build |
볼륨은 도커가 생성하는 컨테이너의 영구 데이터 보관 장소입니다. 볼륨에 대해서는 추후에 좀 더 자세하게 알아볼 예정이므로 여기서는 이런 명령어로 볼륨을 조작하는구나 정도만 알고 넘어갑니다.
볼륨 조작 명령어는 생략형 사용이 불가능합니다 반드시
docker volume을 명령어 앞에 붙여주세요.
| 명령어 | 설명 | 주요 사용 옵션 |
|---|---|---|
| create | 볼륨 생성 | --name |
| inspect | 볼륨 상세 정보 출력 | |
| ls | 볼륨 목록 출력 | -a |
| prune | 마운트되지 않는 볼륨 모두 삭제 | |
| rm | 지정된 볼륨 삭제 |
네트워크 조작 명령어는 생략형, 옵션을 거의 사용하지 않습니다.
| 명령어 | 설명 |
|---|---|
| create | 도커 네트워크 생성 |
| inspect | 도커 네트워크 상세 정보 출력 |
| ls | 도커 네트워크 목록 출력 |
| prune | 컨테이너가 접속되지 않은 네트워크 모두 삭제 |
| rm | 지정한 네트워크 삭제 |
| connect | 컨테이너를 도커 네트워크에 연결 |
| disconnect | 컨테이너의 도커 네트워크 연결 해제 |
단독 명령어는 Subcommand 없이 단독(docker 명령어)으로 사용하는 명령어로 다음 네 가지 명령이 있습니다.
| 명령어 | 설명 | 주요 사용 옵션 |
|---|---|---|
| login | 도커 레지스트리에 로그인 | -u, -p |
| logout | 도커 레지스토리에서 로그아웃 | |
| search | 도커 레지스트리 검색 | |
| version | 도커 엔진, 명령줄 도구 등의 버전 출력 |
명령어 옵션은 명령어에 붙여 명령어에 부가 동작을 지시하는 지정자입니다. 옵션은 선택사항입니다.
docker subcommand command -option
주로 사용되는 그리고 위에서 소개됐던 옵션들은 다음과 같은 의미를 갖습니다.
| 옵션 | 설명 |
|---|---|
-help | 명령어의 사용 방법 출력 |
-i | 표준 입력을 활성화하여 컨테이너와 상호작용 가능하게 함 |
-t | 가상 터미널을 할당하여 셸 인터페이스 제공 |
-it | -i와 -t를 함께 사용 (상호작용 가능한 셸 접속) |
-d | 컨테이너를 백그라운드 모드로 실행 |
--name | 컨테이너에 사용자 지정 이름을 부여 |
-e | 환경 변수 설정 |
-p | 호스트 포트와 컨테이너 포트를 매핑 |
-v | 호스트와 컨테이너 간의 디렉토리(또는 볼륨) 마운트 |
-u | 컨테이너에서 명령을 실행할 사용자 또는 UID 지정 |
-a | 입출력 스트림 연결 설정 (stdin, stdout, stderr) |
-f | 로그 팔로우,Dockerfile 지정 |