티스토리 뷰

4. Docker 관련

2. 도커 사용법 익혀보자

미니대왕님 2020. 3. 30. 16:11

도커(Docker) 사용법

 

 

 

도커(Docker) 라이프사이클(Lifecycle)

 

도커 컨테이너는 하나의 프로세스로 실행되므로  아래 그림과 같은 라이프사이클을 갖는다.

 

 

그림을 살펴보면 대략적으로 도커 명령어에 의해서 어떤 동작이 이루어지는지 알 수 있다.

 

 

 

docker images (이미지 확인)

 

도커 엔진에 존재하는 이미지 목록을 확인 가능

 

$ docker images

 

만약 이미지가 존재한다면 

 

 

이런 식으로 이미지 목록이 나오게 된다.

 

 

 

docker pull (이미지 다운)

 

도커 허브에서 이미지를 받아옴

centos, ubuntu 등은 바로 받아올 수 있음

도커 허브에서 다른 사람들이 올린 이미지를(이미 만들어진) 쉽게 받을 수 있음

 

$ docker pull centos

 

 

이미지 사이즈에 따라 시간이 많이 걸릴 수 있음...

 

 

docker create (이미지로 컨테이너 생성)

 

이미지를 다운로드 했다면, 이미지로 컨테이너를 생성할 수 있다.

 

-i 는 상호 입출력

-t 는 tty를 활성화해서 bash 셸을 사용

 

$ docker create -i -t centos

 

위의 명령어로 컨테이너 생성시 docker 데몬에서 컨테이너명을 정하게 된다.

만약 이름을 설정하고 싶다면 "--name" 옵션을 추가하여 "컨테이너 이름"을 설정할 수 있다.

 

$ docker create -i -t --name (내가 설정하려는 컨테이너 이름) (이미지 이름)

$ docker create -i -t --name tommy_centos  centos

 

 

 

start를 하기 전 docker ps -a 명령어를 사용한다면 STATUS가 "Created" 상태로 나온다.

 

 

 

docker start (생성된 컨테이너 실행)

 

docker create로 컨테이너를 생성했다면 시작후 사용 가능하다.

 

$ docker start tommy_ubuntu

 

start를 한 뒤 docker ps -a (docker ps도 가능) 명령어를 사용한다면 STATUS가 "Up" 상태로 나온다.

 

 

 

docker attach (컨테이너 접속)

 

컨테이너가 Up 상태일 경우 attach 명령어를 사용해서 접속이 가능하다.

 

$ docker attach tommy_ubuntu

 

컨테이너가 정상적으로 실행되었다면 아래와 같이 쉘이 변경된다.

 

[root@233506~~~ / ] #

 

 

 

docker run (이미지로 컨테이너 생성 및 실행)

 

docker run 명령어는 docker create + docker start + docker attach를 한번에 실행하는 것과 같음

 

 

docker run 명령어를 사용하면 이미지를 실행(run) 하여 docker container를 실행

centos 이미지가 없을 경우 도커 허브에서 최신이미지를 자동으로 pull

 

 

아래 명령어를 사용한다면, centos 공식 이미지를 이용하여 컨테이너를 실행시킨다.

 

$ docker run -i -t centos

 

컨테이너가 정상적으로 실행되었다면 아래와 같이 쉘이 변경된다.

 

[root@233506~~~ / ] #

 

 

 

docker ps (-a) (컨테이너 목록 확인)

 

docker ps 명령어는 정지되지 않은 컨테이너 목록만 출력

docker ps -a 명령어는 정지된 컨테이너를 포함한 모든 컨테이너 출력

 

$ docker ps

$ docker ps -a

 

 

ps 명령어를 사용했을 경우(위)에는 Up 상태인 컨테이너만 출력되었고, ps -a 명령어를 사용했을 경우(아래) Exited 상태인 컨테이너도 같이 출력된다.

도커 안에서 exit 하면 status 상태가 exited 가 된다. 이때 up 된 상태 이므로 attach 가 안된다 !

 

다시 start 시켜주고 attach 해야 들어 갈수 있음을 이해 해야만 한다. 

 

 

 

docker rename (컨테이너 이름 변경)

 

docker create나 run 명령어 사용 시 --name 옵션으로 컨테이너 이름을 설정하지 않았다면 도커 데몬에 의해 랜덤하게 이름이 설정된다.

 

이런 경우나, 아니면 다른 이름으로 변경하려면 rename 명령어를 사용하면 된다.

 

 

$ docker rename (기존 컨테이너 이름) (변경할 컨테이너 이름)

 

 

 

docker stop (컨테이너 중지)

 

컨테이너가 실행중이라면 Host의 자원을 사용하므로 사용하지 않을 때 중지할 수 있음

docker rm 과는 다르게 stop을 한 후 다시 start하면 전에 했던 작업을 이어서 할 수 있음

 

$ docker stop (중지할 컨테이너 이름)

 

 

 

docker rm (컨테이너 삭제)

 

컨테이너 삭제 시 컨테이너를 실행하고 작업했던 모든 내용이 삭제되므로 주의해야 함

 

컨테이너를 삭제하기를 원한다면 rm 명령어를 사용하여 삭제 가능

 

$ docker rm (삭제할 컨테이너 이름)

 

 

 

단, rm 명령어만 사용한다면 실행중(Up 상태인)인 컨테이너는 삭제할 수 없으므로 -f 옵션이 필요하다.

 

$ docker rm -f (삭제할 컨테이너 이름)

 

또는 docker stop으로 중지 시킨 뒤, rm으로 삭제할 수 있다.

 

$ docker stop (삭제할 컨테이너 이름) \ docker rm (삭제할 컨테이너 이름)

 

 

 

모든 컨테이너 삭제

 

존재하는 모든 컨테이너를 삭제하려할 때 사용할 수 있는 명령어

컨테이너 삭제 시 컨테이너를 실행하고 작업했던 모든 내용이 삭제되므로 주의해야 함

 

$ docker container prune

  or

 

$ docker stop $(docker ps -a -q) \ docker rm $(docker ps -a -q)

 

 

 

docker 명령어 확인

 

도커도 다른 리눅스 패키지와 마찬가지로 --help 명령어를 이용하여 사용법을 확인할 수 있음

docker, docker -h docker --help 등의 명령어 입력 시 사용법이 출력

 

 

 

docker (명령어) --help, -h를 이용하여 특정 명령어의 사용법, 옵션 등을 확인 가능

 

 

 

 

 

 

댓글