Docker
#
Find similar titles
- 최초 작성자
- 최근 업데이트
Structured data
- Category
- Management
Table of Contents
Docker란? #
- 리눅스 서버를 손쉽게 패키징하고, 배포할 수 있도록 해주는 플랫폼
가상화를 이용한 서버 운영은 여러 장점을 지니고 있다. 미리 만들어진 이미지를 배포함으로써 운영체제 설치 및 설정에 대한 부담을 줄이고 서비스 다운 시 빠르게 복구할 수도 있다. 하지만 가상머신을 이용한 서비스에도 단점은 있다. 리얼 머신에 비해 속도가 느리다는 것이다. 또한 가상 머신이기 때문에 항상 게스트 운영체제를 설치해야 하기 때문에 이미지 용량 또한 커지기 마련이다.
Docker 는 이런 가상 머신보다 좀 더 가벼운 방식으로 작동한다. 게스트 운영체제를 설치하는 것이 아니라 필요한 프로그램과 라이브러리만 따로 설치할 수 있으며 호스트와 리소스를 공유한다. 이런 방식을 통해 이미지 용량을 줄일 수 있을 뿐 아니라 파일시스템, 네트워크 속도 또한 가상 머신에 비해 빠르다.
가상머신 #
가상머신은 그림과 같이 항상 Guest OS를 설치해야한다. 이미지 안에 OS가 포함되기 때문에 이미지 용량이 커진다. 디스크 영역도 포함해서 말이다. 네트워크를 통해 가상머신 이미지를 주고받는 것은 부담될 수밖에 없다.
Docker #
Docker는 가상머신보다는 가벼운 방식으로 동작한다. 그림과 같이 Guest OS가 설치되는 것이 아니라 필요한 프로그램 및 라이브러리만 설치된다. 이런 방식을 통해 이미지 용량을 줄일 수 있을 뿐 아니라 호스트와 리소스를 공유하기 때문에 파일시스템, 네트워크 속도 또한 가상 머신에 비해 빠르다(호스트와 거의 동일한 속도라 한다).
Docker 설치하기 #
리눅스 (CentOS7) #
리눅스에서 도커를 설치하는 방법은 자동 설치 스크립트를 이용하는 것이 가장 쉽다. CentOS의 경우 yum을 사용하여 설치한다.
yum -y update
yum -y install docker docker-registry
설치 후, 자동 실행 서비스에 등록하면 더 편리하게 사용할 수 있다.
systemctl enable docker.service
서비스 등록 후, 실행 및 상태 확인하는 방법은 다음과 같다.
# Docker 실행
systemctl start docker.service
# Docker 상태 확인
systemctl status docker.service
윈도우 #
윈도우에서 도커를 설치하는 방법은 설치 패키지를 이용하여 설치하는 것이 가장 쉽다. 아래 링크에서 'Docker Desktop for Windows'를 다운로드하여 실행한다.
https://hub.docker.com/editions/community/docker-ce-desktop-windows
설치 중, Hyper-V 활성화 여부를 결정해야 하는데 활성화하면 성능은 더 좋아지지만 VirtualBox를 사용할 수 없게 된다. 이 설정은 언제든지 변경할 수 있다.
설치 완료 후, 제대로 설치가 완료되었는지 확인하려면 명령 프롬프트(cmd) 창을 열어서 Docker 버전 확인 명령을 입력한다.
docker -v
Docker 명령어 #
도커 이미지 가져오기
$ docker pull [이미지 이름]:[태그]
$ docker pull mariadb:latest
도커 컨테이너 생성
$ docker create [옵션] [이미지 이름]:[태그]
$ docker create -i -t mariadb:latest
-i 상호 입출력 옵션
-t tty를 활성화하여 bash쉘 사용
도커 컨테이너 실행
$ docker start [이미지 이름]:[태그]
$ docker start mariadb:latest
도커 컨테이너 접속
$ docker attach [이미지 이름]:[태그]
$ docker attach mariadb:latest
도커 컨테이너 생성 후 실행
$ docker run [옵션] [이미지 이름]:[태그]
$ docker run -i -t mariadb:latest
$ docker run -d --rm --name [container name] -v [host path]:[container path] [image name]
$ docker run -d --rm --name service1 -v `pwd`/data:/data ubuntu:latest
--rm 프로세스 종료 후 생성된 컨테이너 삭제
--name 컨테이너이름 지정
-d detach 실행 (백그라운드 실행)
-v 호스트 폴더 마운트
도커 컨테이너 목록 확인
$ docker ps [옵션]
$ docker ps -a
-a 정지된 컨테이너를 포함한 컨테이너 목록
도커 컨테이너 이름 변경
$ docker rename [기존이름] [변경하고자 하는 이름]
$ docker rename mariadb myMariadb
도커 컨테이너 삭제
$ docker rm [컨테이너 이름]
$ docker rm [myMariadb]
도커 컨테이너 변경사항 저장
$ docker commit -a [작성자] -m '[message]' [컨테이너 이름 또는 컨테이너ID] [이미지이름]:[태그]
$ docker commit -a 'Gildong Hong' -m 'My app vers1' service1 service:v1
도커 이미지 파일 저장 및 로드
$ docker save -o [파일이름.tar] [image name]
$ docker load -i [파일이름.tar]
$ docker save -o servicev1.tar service:v1
$ docker load -i servicev1.tar
-o 저장 파일명
-i load 할 파일명
도커 컨테이너 파일 저장 및 로드
$ docker export [컨테이너 이름 또는 컨테이너 ID] > [파일이름.tar]
$ docker import [파일이름] - > [이미지이름]:[태그]
$ docker export service1 > service.tar
$ docker import service.tar - > service:v1