리눅스를 기반으로 도커 사용 방법을 정리하려 한다. 도커는 리눅스 컨테이너를 기반으로 하고 있기 때문에 윈도우 혹은 맥 OS를 사용하는 경우 먼저 가상머신을 이용해 리눅스 사용 환경을 갖춘 후 리눅스 기반 도커 사용 설치 및 사용 방법을 적용하면 된다.
1. 설치
아래와 같이 도커 공식 웹 페이지에서 제공하는 쉘 스크립트를 이용해서 설치하는 것이 가장 무난하다.
$> curl -s https://get.docker.com/ | sudo sh
참고로 https://get.docker.com 페이지에 접속해 보면 쉘 스크립트 내용을 확인할 수 있다.
2. 기본적인 도커 사용 방법
2.1. 도커 컨테이너 생성
도커 데이터는 이미지와 컨테이너로 나뉜다. 도커 이미지가 실행되어 프로세스로 활성화되면 도커 컨테이너가 된다. docker run 명령을 이용해서 도커 이미지를 실행시켜 도커 컨테이너를 만들 수 있다.
$> docker run [OPTIONS] IMAGE[:TAG] [COMMAND] [ARG]
예를 하나 살펴보자. ubuntu 18.04 버전 도커 이미지를 활성화시키는 명령은 아래와 같다.
$> docker run --rm -it ubuntu:18.04 /bin/sh
위 예의 명령에서 --rm, -it는 OPTIONS에 해당하고 ubuntu는 IMAGE, 18.04는 TAG(보조 이름), 그리고 /bin/sh는 COMMAND에 해당한다. 위 명령어는 ubuntu 18.04 이미지를 컨테이너로 활성화고 /bin/sh 쉘을 실행시키라는 뜻이다. 만약 컴퓨터에 저장되어 있는 이미지가 없다면 도커가 Docker hub(Git hub과 역할이 같고 도커 이미지를 저장하고 있다)에서 이미지를 찾아서 자동으로 다운로드 한다. 기본 저장소 위치는 /var/lib/docker다.
자주 사용하는 옵션들(OPTIONS)을 정리하면 아래와 같다. 아래 표 정도만 알고 있어도 큰 불편 없이 도커를 사용할 수 있다. 옵션들은 무엇이 있는지 한 번 읽어보고 가자. 포스팅을 이어가면서 그 예를 살펴보게 될 것이다.
OPTIONS | 기능 |
-d | detached mode = 백그라운드 모드(-a: attached mode, 포어그라운드 모드) |
-p | '호스트 포트:컨테이너 포트'와 같이 사용한다. 호스트의 포트를 컨테이너 포트로 연결(포워딩)한다. |
-v | 호스트와 컨테이너의 디렉토리를 연결(마운트) |
-e | 컨테이너 내에서 사용할 환경변수 설정 |
--name | 컨테이너 이름 설정 |
--rm | 프로세스 종료 시 컨테이너 자동제거 |
-it | -i, -t를 동시에 사용한 것으로 터미널 입력을 위한 옵션이다. |
--network | 네트워크 연결 |
2.2. 컨테이너 목록 확인
$> docker ps [-a]
-a 중지된 컨테이너를 포함한 전체 컨테이너 목록. ps는 process의 줄임말이다.
2.3. 실행중인 컨테이너 중지
활성화된 컨테이너를 중지하는 방법에는 세 가지가 있다.
방법 1. 컨테이너 쉘 안에서 컨테이너 중지 없이 나오는 방법
$docker-container> 'Ctrl+p, Ctrl+q를 연속해서 입력한다.'
방법 2. 컨테이너 쉘 안에서 컨테이너를 중지한 후 나오는 방법
$docker-container> exit
방법 3. detached 모드의 컨테이너를 호스트의 쉘에서 중지하는 방법
$> docker stop [container id]
※ id는 첫 일부만 입력해도 된다.
2.4. 컨테이너 삭제
실행이 중지된 컨테이너도 컨테이너 목록에 Exited 상태(STATUS)로 남아있게 된다.
docker rm 명렬을 이용해서 비활성화 된 컨테이너를 메모리에서 삭제할 수 있다.
$> docker rm [container id], [container id], ...
이번 포스팅을 마치면서
먼저 도커를 설치하고 도커 이미지를 활성화하여 도커 컨테이너를 만드는 방법을 살펴보았다. 이어서 도커 컨테이너들을 확인하고 중지 및 삭제하는 방법을 살펴보았다.
이어지는 포스팅에서는 도커 이미지를 관리하는 방법에 대해 살펴보도록 할 계획이다.
■
'풀스택 개발 들여다보기' 카테고리의 다른 글
[Docker] 자주 사용하는 도커 명령어들 (0) | 2022.02.20 |
---|---|
[Docker] 도커 이미지docker image 관리 (0) | 2022.02.16 |
[Docker] 가상머신 Vs. 컨테이너 (0) | 2022.02.11 |
[Docker] 도커란 무엇이고 왜 쓸까? (0) | 2022.02.10 |
[풀스택 개발] 풀스택 개발 돌아보기 (0) | 2022.02.08 |
댓글