Docker(2)

2020-01-03

지난 포스팅엔 Docker가 어떤건지 확인해봤다. 이번엔 Docker를 설치 해보고 Docker image를 이용해 container를 만들고 명령어를 알아보도록 하자.

Docker 설치하기

docker는 기본적으로 root권한이 필요하다. 이전 회사에서는 root권한을 일개 개발자에게 주지 않아서 관리자에게 설치 요청을 한 적도 있다.

1
sudo curl -fsSL https://get.docker.com/ | sudo sh

주의할 점으로 Docker를 실행하기 위한 kernel 버전은 3.10.x 버전 이상이어야 한다.
ubuntu나 centos가 아닌 경우는 이곳 을 확인하자.

설치 확인
image01

내용을 보면 버전정보가 Client와 Server로 구분되어있다. Docker는 하나의 실행파일이지만 실제로 Client와 Server를 각각 수행 할 수 있다. Docker Command를 입력하면 Docker Client가 Docker Server로 Command를 전송하고 결과를 받아 터미널에 출력해준다.
image02

Container 실행하기

Docker를 실행하는 명령어는 다음과 같다.

1
sudo docker run [OPTIONS] IMAGE:[:TAG|@DIGEST] [COMMAND] [ARG...]

자주 사용하는 옵션들.

옵션 설명
-d detached mode (BackGround Mode)
-p Host와 Container Port를 연결
-v Host와 Container 디렉토리를 연결
-e Container에서 사용할 환경변수 설정
-name Container 이름설정
-rm 프로세스 종료시 Container 자동 제거
-it -i와 -t를 동시에 사용한 것으로 Terminal 입력을 위한 옵션
-link Container연결

Centos7 설치해보기

1
sudo docker run centos:7

image03
run 명령어를 사용하면 사용할 Image가 저장되어있는지 확인하고 없다면 다운로드 한 후 컨테이너를 생성 하고 시작한다.

그럼 해당 container에 centos가 정상적으로 설치되었는지 확인해보자
image04

Docker CommandLine

docker command의 자세한 정보는 여기 에서 확인이 가능하다. 많이 사용되는 CommandLine 위주로 살펴 보자

Container 목록 확인하기 (ps)

현재 설치된 Container의 목록을 보여주는 명령어이다.
일반적으로 -a 옵션을 붙여서 많이 사용한다 (-a 옵션을 주지 않으면 종료된 Container는 보이지 않는다)

1
sudo docker ps -a

image06

Container Stop / Start

실행 중인 컨테이너를 중지하거나 시작 할 수 있는 명령어이다.

1
2
sudo docker stop [OPTIONS] CONTAINER [CONTAINER...]
sudo docker start CONTAINER

image07
첨부된 이미지의 mysql:5.7 Container 를 Stop / Start 해봤다. Container 의 STATUS 상태를 보면 된다.

Container 제거(rm)

Container를 제거하기 위해선 Stop 상태여야 한다. Container 제거하는 명령어는 아래와 같다

1
sudo docker rm [OPTIONS] CONTAINER [CONTAINER...]

image08
첨부된 이미지에서 mysql:5.7 Container 를 삭제해봤다
Container 가 종료상태가 아닌 경우 제거를 시도하면 running 중이지 제거가 불가능하다는 Error가 발생한다.
Container 종료 후 삭제하면 정상적으로 Container 가 삭제되는 것을 확인 할 수 있다.

Image 목록 확인하기 (images)

다운로드된 이미지를 확인하는 명령어이다.

1
sudo docker images

image05
제가 설치한 서버에는 centos, mongo, mysql images가 있네요

Image 다운로드하기

1
sudo docker pull [OPTION] name[:TAG|@DIGEST]

ubuntu 를 다운로드 해보겠습니다.
image09

Images 삭제하기

1
sudo docker rmi [OPTION] IMAGE [IMAGE...]

Image 삭제시 주의 할 점은 Image를 통해 Container를 생성 한 경우는 Image를 삭제 할 수 없다.
Container를 먼저 삭제 한 이후 삭제가 가능하다
image10
첨부파일과 같이 현재 Container가 생성된 mongo의 image를 삭제하려고하면 Error가 발생한다

Container log보기

Container 가 정상적으로 실행이 되었는지 확인이 필요한 경우가 있는데
log를 보는 방법이다.

1
sudo docker logs ${containerId}

image11

아무 옵션을 주지 않았을 때는 전체 로그를 출력합니다.
마지막 10줄의 로그만 보는 방법은 아래와 같다.

1
sudo docker logs --tail 10 ${containerId}

실시간 로그를 확인하는 방법은 아래와 같다

1
sudo docker logs -f ${containerId}

Container 들어가기

Container를 관리하다 보면 실행중인 Container에 들어가서 로그를 확인한다거나 파일을 실행한다거나 하는 작업이 필요할 경우가 많다.
Container 에 SSH를 설치해도 되지만 추천하지 않는다고 한다. 컨테이너 내부에 들어가는 명령은 아래와 같다.

1
sudo docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

ubuntu 서버에 설치된 centos container 에 들어가보도록 하겠다
image12

이 외에 많은 기능들이 있는데 그러한 부분은 reference를 보면서 활용해 보면 될 듯 하다.

참고

https://subicura.com/2017/01/19/docker-guide-for-beginners-2.html