본문 바로가기
클라우드 컴퓨팅/Docker

도커 기본 명령어 - 컨테이너 생성, 삭제, 실행, 정지

by 안드레날린 2022. 5. 21.

도커 이미지 얻기

docker pull {이미지 이름}:[태그]

docker pull {도커 ID/이미지 이름}:[태그]

 

pull 명령은 도커 레지스트리에서 이미지를 가져와 시스템에 저장한다.

태그를 생략하는 경우 디폴트 값 : latest

$ docker pull alpine
$ docker pull docker/getting-started:latest

 

도커 이미지 목록 조회

docker image ls

docker images

 

image ls 또는 축양형인 images 명령은 시스템의 모든 이미지 목록을 출력한다.

$ docker image ls
$ docker images

 

도커 이미지 삭제

docker image rm [옵션] {이미지 ID}:[태그]

docker image rm [옵션] {도커 ID/이미지 이름}:[태그]

 

docker rmi [옵션] {이미지 ID}

docker rmi [옵션] {도커 ID/이미지 이름}:[태그]

 

image rm 또는 축약형인 rmi 명령은 호스트에 존재하는 도커 이미지를 삭제한다.

옵션을 생략하는 경우 디폴트 값 : 해당 이미지를 이용하여 생성된 컨테이너가 존재하면 이미지 삭제 불가

$ docker rmi eb9194091564
$ docker rmi docker/getting-started:latest

 

해당 이미지를 이용하여 생성된 컨테이너를 정리하지 않고 이미지 삭제를 시도한 경우

$ docker rmi docker/getting-started
Error response from daemon:
conflict:
unable to remove repository reference "docker/getting-started" (must force)
- container c4d238bf33d5 is using its referenced image eb9194091564

 

[옵션]

-f, --force : 이미지를 강제로 삭제 (해당 이미지를 이용하여 생성된 컨테이너는 삭제되지 않는다.)

$ docker rmi -f eb9194091564
$ docker rmi -f docker/getting-started:latest

 

도커 컨테이너 생명 주기

도커 컨테이너의 생명 주기 : 생성 -> 시작 -> 실행 -> 중지 -> 삭제

 

각 생명 주기 단계별 명령은 다음과 같다. 

생성 : docker create {이미지 이름}:[태그]

시작 + 실행 : docker start {컨테이너 ID or 컨테이너 이름}

생성 + 시작 + 실행 : docker run {이미지 이름}:[태그]

중지 : docker stop {컨테이너 ID or 컨테이너 이름}

삭제 : docker rm {컨테이너 ID or 컨테이너 이름}

 

도커 컨테이너 생성과 실행

docker run [옵션] {이미지 이름}[:태그|@DIGEST] [명령어] [인자...]

docker run {이미지 이름}

 

run 명령은 컨테이너를 생성하고 실행한다.

$ docker run alpine ls -l

 

[옵션]

--name : 컨테이너 이름 지정

-d : 분리 모드(백 그라운드)로 컨테이너 실행

-p 80:80 : 호스트의 80번 포트를 컨테이너의 80번 포트와 맵핑

-v /data/docker_storage:/data : 호스트_디스크:컨테이너_디렉토리, 볼륨을 마운트함

-e CATALINA_HOME=/home/ahndrenaline/tomcat : 환경변수_이름=환경변수_값, 컨테이너에 환경변수를 설정

-i : 컨테이너에 터미널(키보드)를 연결(주로 -it와 같이 사용)

-t : 특수 키를 사용 가능하도록 함(주로 -it와 같이 사용)

--net --net=네트워크_이름 : 컨테이너를 네트워크에 연결함

-help : 사용 방법 출력

docker/getting-started : 도커 ID/이미지 이름

 

* -p --publish, -v --volume, -e --env, -d --detach, -i --interactive, -t --tty의 생략형이다.

 

$ docker run -d -p 80:80 docker/getting-started
$ docker run -dp 80:80 docker/getting-started

 

도커 컨테이너 목록 조회

docker ps [옵션]

 

ps 명령은 프로세스의 상태(process status)를 출력한다.

옵션을 생략하는 경우 디폴트 값 : 현재 가동중인 컨테이너만 표시

$ docker ps

 

[옵션]

-a, --all : 모든 컨테이너 목록

-l, --latest : 마지막에 생성한 컨테이너만 출력

-q, --quiet : 컨테이너 ID만 출력

-s, --size : 컨테이너 사이즈도 함께 출력

$ docker ps -a
$ docker ps -a -s
$ docker ps -as

 

도커 컨테이너 중지

docker stop {컨테이너 ID or 컨테이너 이름}

docker kill {컨테이너 ID or 컨테이너 이름}

 

stop 명령은 컨테이너를 Graceful 종료한다. (SIGTERM 사용, 작업들을 모두 마치고 컨테이너를 중지)

kill 명령은 컨테이너를 즉지 종료한다. (SIGKILL 사용)

$ docker stop e7836fbdb8a4
$ docker kill e7836fbdb8a4

 

응용 : 가동중인 컨테이너 모두 종료하기

$ docker stop `docker ps -q`
$ docker stop $(docker ps -q)

 

도커 컨테이너 삭제

docker rm [옵션] {컨테이너 ID or 컨테이너 이름}

 

rm 명령은 중지된 컨테이너를 삭제한다.

옵션을 생략하는 경우 디폴트 값 : 가동중인 컨테이너 삭제 불가

$ docker rm e7836fbdb8a4

 

가동중인 컨테이너를 삭제 시도한 경우

$ docker rm e7836fbdb8a4
Error response from daemon:
You cannot remove a running container e7836fbdb8a49e9c986f2775c9aee8ae92375b172de3f67753adba650811c7af.
Stop the container before attempting removal or force remove

 

[옵션]

-f, --force : 가동중인 컨테이너 강제로 삭제 (SIGKILL 사용)

$ docker rm -f e7836fbdb8a4

 

응용 : 모든 컨테이너 삭제하기