도커 사용법을 빠르게 설명합니다. ‘간단한 사용’에 포커스가 맞춰져 있습니다.
ABCD 리눅스 스터디 자료의 도커 설정 부분을 참고하셔도 좋습니다.

 

도커 설치

Windows 사용자

주의!! Window 10 Pro 이전 버젼 사용자는 툴박스(Docker Toolbox)를 설치하셔야 합니다.
Docker Toolbox는 OS 에서 가상화를 지원하지 않는 OS에서 사용합니다. (Hyper-V 미지원)
별도의 VM (Virtual Box)에 호스트 머신(리눅스)을 실행하고 그 위에서 도커 컨테이너를 생성합니다.
docker-machine명령어를 이용해 호스트머신을 컨트롤 합니다.

Mac 사용자

Docker Community Edition (CE)

Linux(Ubuntu) 사용자

Get Docker CE for Ubuntu

 

도커 이미지 설치

윈도우는 cmd, 맥은 터미널을 실행합니다.
여기서는 도커허브ubuntu:latest 를 다운로드 합니다.

$ docker pull ubuntu

Using default tag: latest
latest: Pulling from library/ubuntu
124c757242f8: Pull complete 
9d866f8bde2a: Pull complete 
fa3f2f277e67: Pull complete 
398d32b153e8: Pull complete 
afde35469481: Pull complete 

태그명 :latest 를 빼면 자동으로 latest 버젼을 다운로드 합니다.

 

도커 이미지 확인

다운로드 받은 도커이미지를 확인할때는 docker images 명령어를 사용합니다.

$ docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              latest              cd6d8154f1e1        13 days ago         84.1MB

 

도커 컨테이너 실행

다운로드 받은 도커 이미지를 실행(run: 컨테이너)에는 docker run 명령어를 사용합니다.

구체적인 docker run 은 많은 기능을가지고 있습니다.

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

 

다운받은 우분투 이미지를 실행해보겠습니다.

$ docker run -it ubuntu 
root@64de3e1ea39a:/# 

ubuntu 컨테이너가 생성되었고 표줍입력과 표준출력 콘솔(쉘)에 연결된 것을 확인할 수 있습니다.
여기서 -it는 Standard Input 이 가능한 tty를 나타냅니다.
자세한 사용법은 docker run에서 확인하세요.

-t  : Allocate a pseudo-tty
-i  : Keep STDIN open even if not attached

 

도커 컨테이너 콘솔에서 종료하지 않고 빠져 나올때는 ctrl + p, ctrl + q 를 차례로 입력하시면 됩니다.
종료하고 빠져 나오는 경우는 ctrl + c또는 ctrl + d 를 키 exit 명령어를 사용합니다.

 

도커 컨테이너 확인

생성된 컨테이너 목록을 확인하시려면 docker ps 명령을 사용합니다.

$ docker ps
$ docker ps -a
$ docker ps --all   # -a 와 같습니다.

여기서 docker ps를 사용하면 실행중인 컨테이너만 나오게 됩니다.
실행중이지 않은 컨테이너는 docker ps -adocker ps --all 명령어를 사용하여 확인합니다.

 

도커 컨테이너 이름 변경

docker run에서 컨테이너 이름을 정하지 않은 경우 자동으로 임의 문자로 컨테이너 명이 생성됩니다.

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
64de3e1ea39a        ubuntu              "/bin/bash"         10 minutes ago      Exited (0) 3 minutes ago                       tender_bartik

저는 컨테이너 명이 tender_bartik이라고 생성되었네요. (모두 다르기 때문에 자신의 컨테이너명을 사용해주세요.)

컨테이너 명을 변경 하고 싶다면 docker container rename 를 사용합니다.

$ docker container rename tender_bartik ubuntu_container        # 컨테이너명(tender_bartik)을 본인의 NAMES로 변경하시기 바랍니다.

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
64de3e1ea39a        ubuntu              "/bin/bash"         11 minutes ago      Exited (0) 5 minutes ago                       ubuntu_container

이름이 변경되었습니다. (NAMES ubuntu_container)

 

도커 컨테이너에 연결

도커 컨테이너에 연결하려면 docker attach 명령어를 사용합니다.

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
64de3e1ea39a        ubuntu              "/bin/bash"         11 minutes ago      Exited (0) 5 minutes ago                       ubuntu_container

$ docker attach ubuntu_container
root@64de3e1ea39a:/# 

$ docker attach 64de3e1ea39a # 컨테이너 명 대신 컨테이너 아이디를 사용하셔도 됩니다.
root@64de3e1ea39a:/# 

 

도커 컨테이너 컨트롤

docker run -it 에서 ctrl + d 나 콘솔 종료(exit)로 빠져 나온 경우에는 docker container 가 종료됩니다.

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
64de3e1ea39a        ubuntu              "/bin/bash"         11 minutes ago      Exited (0) 5 minutes ago                       ubuntu_container
$ docker attach ubuntu_container
You cannot attach to a stopped container, start it first

이 상태에서는 연결이 불가능하고 컨테이너를 시작하라는 메시지가 출력됩니다.

 

$ docker start ubuntu_container		# 컨테이너 시작 
ubuntu_container

$ docker start 64de3e1ea39a			# 컨테이너 아이디로도 시작 가능 
ubuntu_container

$ docker attach ubuntu_container	# 컨테이너 연결
root@64de3e1ea39a:/# 

컨테이너를 시작(start)하고 attach 명령어로 컨테이너에 접속하면 정상적으로 컨테이너에 연결 할 수 있습니다.

 

$ docker stop ubuntu_container          # 컨테이너 정지 
$ docker restart ubuntu_container       # 컨테이너 재시작

컨테이너를 정지하거나 재시작 할때는 start, stop 명령어를 사용합니다.

 

컨테이너 삭제

컨테이너를 삭제하려면 docker rm 명령어를 사용합니다.

$ dorker rm ubuntu_container
Error response from daemon: You cannot remove a running container 64de3e1ea39ac025d86a4f2d21dcad71b08624656cf708071e49b9f58adf09e6. Stop the container before attempting removal or force remove

컨테이너가 실행중이라면 삭제되지 않습니다.

$ dorker stop ubuntu_container
$ dorker rm ubuntu_container

이때는 컨테이너를 정지(stop) 한 후 삭제(rm) 합니다.

 

다운로드 이미지 삭제

이미지를 삭제하려면 docker rmi 명령어를 사용합니다.

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              latest              cd6d8154f1e1        13 days ago         84.1MB

$ docker rmi ubuntu
$ docker rmi ubuntu:latest      # docker rmi ubuntu과 동일 태그명까지 포함

 

컨테이너가 실행중일 때는 -f 옵션으로 강제로 삭제 합니다.

$ docker rmi -f ubuntu

 

docker-machine

Docker Toolbox를 설치한 Windows 10 Professional 이전 사용자만 적용됩니다.
Docker Toolbox를 설치 할때 Virtual Box 포함하면 자동으로 default 머신이 생성됩니다.
상세한 내용은 docker-machine에서 확인 가능합니다.

default 호스트 머신을 생성하려면 docker-machine create 명령어를 사용합니다.
Virtual Box 를 실행해보면 default 라는 호스트가 생성되어있음을 확인 할 수 있습니다.

> docker-machine create default         # 도커 호스트 머신 생성
> docker-machine start default          # 도커 호스트 머신 시작
> docker-machine stop default           # 도커 호스트 머신 종료
> docker-machine ls                     # 도커 호스트 머신 목록

 

정리

Docker의 모든 기능은 책 한권을 써도 부족하지만 간단하게 사용할 수 있을 정도로만 작성해 보았습니다.
고급 사용법이 필요하신 분들은 docker.com이나 추후 이어질 도커 포스트를 참조하시길 바랍니다.

 

참고자료

docker.com