도커 명령어 종류
[Git Bash] 시작 전 명령어 커스텀 하기
--
일반적으로 Docker 명령어를 작성할 때 "docker ... "로 작성한다.
docker run
다만 Window환경에서 Git Bash를 통해 Docker 명령어를 작성할 때는 앞에 winpty를 추가로 작성해줘야 한다.
winpty docker run
winpty를 앞에 붙여줘야 하는 이유는
Git Bash에서 컨테이너 Shell로 접근하기 위해서 winpty를 작성해 주는 것이다.
Git을 설치할 때 터미널 설정 부분에서 "use Min TTY"(기본 터미널)를 선택하여 설치하게 되면
"winpty"를 도커 명령어 앞에 작성해줘야 한다.
"use Min TTY"가 아니라 "Use Windows default console window"(윈도우 기본 터미널)을 선택하여 설치하면
"winpty"를 사용하지 않아도 된다.
다만 윈도우 기본 터미널로 설치하게 되면 제한적인 기능들이 생기게 된다.
하지만 매번 winpty를 붙여 사용하는 것은 번거롭기 때문에 이를 기본값으로 커스텀해보자.
"docker"라는 명령어를 작성하면 자동으로 "winpty docker"라는 명령어가 실행되도록 설정 방법
"alias" 명령어를 사용하려 특정 명령어를 줄여서 사용할 수 있도록 별칭을 정해준다.
echo “alias docker=‘winpty docker’” >> ~/.bashrc
잘 설정이 되었나 확인하기 위해 별칭으로 설정한 모든 항목을 조회하는 명령어를 사용하자.
alias
"winpty docker"라는 명령어를 "docker"라는 명령어로 별칭을 설정한 것을 확인할 수 있다.
--
이미지 관련 명령어
--
이미지 조회
특정 이미지 조회 명령어 형식
docker image ls {이미지명}
이미지 리스트 조회 명령어 형식 (저장된 모든 이미지 조회)
docker image ls
특정 이미지의 세부 정보 (메타데이터) 조회 명령어 형식
docker image inspect {이미지명}
이미지 생성 (빌드)
Dockerfile을 통해 소스코드로 이미지 빌드(생성)하는 명령어 형식
docker build {-t 이미지명} {dockerfile경로}
기존 이미지명에서 다른 이미지명으로 변경하기
docker tag {기존이미지명} {변경이미지명}
기존이미지명을 변경하는 것이 아닌
기존이미지를 복사한 다음 복사한 이미지에 대해 이미지명을 변경
즉, 기본이미지는 그대로 있고 추가로 똑같은 이미지지만 이미지명만 다른 이미지가 추가로 생성된다.
실행 중인 컨테이너를 그대로 새로운 이미지 생성 명령어 형식
docker commit [옵션] {컨테이너명} {이미지명}
docker commit [-m "커밋 메시지"] [-c 'CMD ["CMD에 추가할 명령어"]'] {컨테이너명} {이미지명}
이미지 삭제
로컬 저장소에 존재하는 이미지 삭제 명령어 형식
docker image rm {이미지명}
--
컨테이너 관련 명령어
--
컨테이너 생성 및 실행 ( + 컨테이너 생명주기 관련)
컨테이너 생성 명령어 형식
docker create [-d] [--name 컨테이너명] {이미지명}
컨테이너명을 지정하지 않으면 자동으로 임의의 이름으로 생성된다.
생성된 컨테이너를 실행 명령어 형식
docker start [-d] {컨테이너명}
컨테이너 생성 및 실행을 동시에 하는 명령어 형식
docker run [-d] [--name 컨테이너명] {이미지명}
실행 중인 컨테이너를 재실행하는 명령어 형식
docker restart {컨테이너명}
실행 중인 컨테이너를 일시 중지시키는 명령어 형식
docker pause {컨테이너명}
일시 중지된 컨테이너를 이어서 실행시키는 명령어 형식
docker unpause {컨테이너명}
실행 중인 컨테이너를 완전히 종료시키는 명령어 형식
docker stop {컨테이너명}
컨테이너 생성 및 실행 시 메타데이터의 Cmd 명령어 덮어씌우는 명령어 형식
docker run [--name 컨테이너명] {이미지명} [Cmd에 덮어씌울 명령어]
컨테이너 생성 및 실행 시 메타데이터의 Env 덮어씌우는 명령어 형식
docker run [-e 환경변수=값] [--name 컨테이너명] {이미지명}
컨테이너 생성 및 실행 시 포트 지정 (포트포워딩)하는 명령어 형식
docker run {-p 호스트OS포트:컨테이너포트}
호스트 OS포트 : 서버(PC)에서 접근하려는 포트
컨테이너포트 : 컨테이너에서 사용하는 포트
예시 -p 81:80
서버(PC)에서 81 포트로 접근하면
80 포트를 사용하는 컨테이너로 접근
컨테이너 생성 및 실행 시 네트워크에 연결하는 명령어 형식
docker run [-d] [--network 네트워크명] [--name 컨테이너명] {이미지명}
네트워크 연결을 생략하면 기본 네트워크에 자동 연결된다.
컨테이너 생성 및 실행 시 컨테이너의 특정 디렉터리를 볼륨에 마운트하는 명령어 형식
docker run [-v 볼륨명:컨테이너의 디렉토리 경로] [--name 컨테이너명] {이미지명}
컨테이너 생성 및 실행 시 컨테이너의 특정 디렉토리를 볼륨에 바인드 마운트하는 명령어 형식
docker run [-v 마운트할 호스트OS 경로:컨테이너의 디렉토리 경로] [--name 컨테이너명] {이미지명}
컨테이너 조회
실행 중인 컨테이너 리스트 조회
docker ps
docker container ls
모든 컨테이너 리스트 조회
docker ps [-a]
docker container ls [-a]
실행 중인 컨테이너의 세부 정보 (메타데이터) 조회 명령어
docker container inspect {컨테이너명}
컨테이너 삭제
실행 중지된 특정 컨테이너 삭제 명령어 형식
docker rm {컨테이너ID|컨테이너명}
실행 중지된 다중 컨테이너 삭제 명령어 형식
docker rm {컨테이너ID|컨테이너명} {컨테이너ID|컨테이너명} {컨테이너ID|컨테이너명} ...
실행 중인 특정 컨테이너 삭제 명령어 형식
docker rm [-f] {컨테이너ID|컨테이너명}
실행 중인 다중 컨테이너 삭제 명령어 형식
docker rm [-f] {컨테이너ID|컨테이너명} {컨테이너ID|컨테이너명} {컨테이너ID|컨테이너명} ...
--
네트워크 관련 명령어
--
네트워크 생성하는 명령어 형식
docker network create {네트워크명}
네트워크 생성할 때 특정 IP 주소와 IP 주소 사용 범위를 지정하는 명령어 형식
docker network create [--driver 네트워크 유형] [--subnet IP주소 범위] [--gateway IP 주소] {네트워크명}
네트워크 목록 조회 명령어 형식
docker network ls
특정 네트워크 상세 정보 조회 명령어 형식
docker network inspect {네트워크명}
네트워크 삭제 명령어 형식
docker network rm {네트워크명}
해당 네트워크에 연결된 컨테이너가 없어야 삭제 가능
특정 컨테이너를 특정 네트워크에 연결하는 명령어 형식
docker network connect {네트워크명} {컨테이너명}
--
볼륨 관련 명령어
--
볼륨 생성 명령어 형식
docker volume create {볼륨명}
볼륨 리스트 조회 명령어 형식
docker volume ls
특정 볼륨의 상세 정보 조회 명령어 형식
docker volume inspect {볼륨명}
볼륨 삭제 명령어 형식
docker volume rm {볼륨명}
해당 볼륨을 사용하는 컨테이너가 없을 경우에만 삭제가 가능하다.
--
도커허브 관련 명령어
--
도커에 로그인하는 명령어 형식
docker login
도커에 로그아웃 하는 명령어 형식
docker logout
도커 허브 이미지 저장소에 이미지 업로드 명령어 형식
docker push {이미지명}
도커 허브 이미지 저장소에 이미지 다운로드 명령어 형식
docker pull {이미지명}
도커 허브와 관련하여 이미지명을 작성할 때에는 적어도 도커허브 사용자명도 이미지명에 추가되어야 한다.
"anijy/testimage"
그 외에 부가적인 것은 태그,
--
그 외의 추가 명령어
--
실행 중인 컨테이너의 로그 조회 명령어 형식
docker logs {컨테이너명}
실행 중인 컨테이너의 실시간 로그 조회 명령어 형식
docker logs [-f] {컨테이너명}
컨테이너 내부 로그 출력에서 빠져나오는 방법 : Ctrl + c 단축키를 누른다.
(빠져나와도 컨테이너는 계속 실행 중)
특정 이미지의 이미지 레이어 이력을 조회하는 명령어 형식
docker image history {이미지명}
컨테이너 실행 시 해당 컨테이너 내부(터미널)에 접근하는 명령어 (Cmd에 터미널 접근 명령어 덮어씌우기)
docker run [-it] [--name 컨테이너명] {이미지명} [bin/bash]
"bin/bash" 명령어는 bash shell로 접속하는 명령어 (터미널 접근 명령어)
--
옵션
--
옵션 | 주 사용처 | 설명 |
-d, --datach | 컨테이너 | 백그라운드에서 실행시키는 옵션 |
--name | 컨테이너 | 컨테이너명을 지정하는 옵션 |
-a, --all | 컨테이너 | 모든 데이터(컨테이너)를 의미하는 옵션 |
-f, --force | 컨테이너 | 실행 중인 컨테이너를 의미하는 옵션 |
-e, --env | 컨테이너 | 메타데이터의 환경 변수 Env를 의미하는 옵션 |
-p, --publish | 컨테이너 | 호스트와 컨테이너 간의 포트를 매핑하는 옵션 |
-f, --follow | 컨테이너의 log | 컨테이너의 로그에 접근할 때 실시간으로 로그를 출력하는 옵션 |
-it | 컨테이너 | -i 옵션과 -t 옵션을 결합한 옵션 |
-i | 컨테이너 | 컨테이너의 표준 입력을 활성화 하는 옵션 (컨테이너가 실행되는 동안 사용자는 계속 터미널에 명령어 입력 가능) |
-t | 컨테이너 | TTY를 할당하여 터미널을 애뮬레이션 가능하게 하는 옵션 (컨테이너 내부의 터미널 인터페이스를 제공) |
-m | 컨테이너 커밋 | 컨테이너를 이미지로 커밋할 때 커밋 메시지 지정하는 옵션 |
-c | 컨테이너 커밋 | 컨테이너를 이미지로 커밋할 때 Cmd의 명령어를 추가(수정)하는 옵션 |
-t | 이미지 빌드 | 이미지 빌드시 생성할 이미지명을 지정하는 옵션 |
--driver | 네크워크 | 네트워크 유형을 지정하는 옵션 |
--subnet | 네크워크 | 해당 네트워크에서 사용할 컨테이너들이 할당 받을 수있는 IP 주소 범위 지정 옵션 |
--gateway | 네크워크 | 해당 네트워크의 IP 주소 지정하는 옵션 |
-v, --volume | 컨테이너 | 해당 컨테이너의 특정 디렉토리를 볼륨에 마운트하는 옵션 |
--
참고 및 출처
'Docker' 카테고리의 다른 글
이미지 관리 + 컨테이너 실행 및 삭제하기 (명령어) (0) | 2024.06.08 |
---|---|
이미지란? (0) | 2024.06.07 |
Docker란? (0) | 2024.06.04 |
[Docker 시작전] 베어메탈 vs 하이퍼바이저 vs 컨테이너 (feat. 가상화) (0) | 2024.06.04 |
[Docker 시작 전] 서버란? (0) | 2024.05.30 |