차이
문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판이전 판다음 판 | 이전 판 | ||
tech:docker [2016/07/19 09:43] – V_L | tech:docker [2020/12/31 13:53] (현재) – [단점] 118.217.124.148 | ||
---|---|---|---|
줄 1: | 줄 1: | ||
{{tag> | {{tag> | ||
====== Docker ====== | ====== Docker ====== | ||
- | {{INLINETOC}} | + | |
+ | Docker는 [[esxi|VMware]]나 [[VirtualBox]] 등의 가상화 기술과 비슷하다. | ||
+ | |||
+ | |||
+ | OS의 내부는 물리적 자원을 관리하는 ‘커널 공간 “과 사용자 프로세스 (애플리케이션)을 실행하는”사용자 공간 “으로 나뉩니다. | ||
+ | 컨테이너 형 가상화는 사용자 공간을 여러 개로 나누어 각각의 사용자 프로세스에서 보이는 리소스를 제한하는 것임. | ||
+ | |||
+ | |||
+ | > Docker의 컨테이너는 Virtual machine과 같이 하나의 온전한 서버를 제공하는 것이 아니라 명령을 실행하는 환경만 제공하고 그 명령을 실행할 뿐이다 (([[https:// | ||
- | Docker는 [[VMware]]나 [[VirtualBox]] 등의 가상화 기술과 비슷하다. | ||
줄 10: | 줄 17: | ||
[[tech: | [[tech: | ||
- | VMware, [[VirtualBox]], | + | VMware, [[VirtualBox]], |
=====장점===== | =====장점===== | ||
다른 가상 머신에 비해서 성능 손실이 매우 적기 때문에 서버에서 유용하게 활용된다. 예를 들면 아파치+PHP+웹 소스를 Docker 이미지로 묶어 놓은 뒤 서버에서 이미지를 컨테이너로 실행만 하면 된다. 서버 세팅을 이미지로 만들어서 반복 작업을 자동화하는 것이다. 물론 Docker 이미지는 인터넷으로 주고 받을 수 있다. | 다른 가상 머신에 비해서 성능 손실이 매우 적기 때문에 서버에서 유용하게 활용된다. 예를 들면 아파치+PHP+웹 소스를 Docker 이미지로 묶어 놓은 뒤 서버에서 이미지를 컨테이너로 실행만 하면 된다. 서버 세팅을 이미지로 만들어서 반복 작업을 자동화하는 것이다. 물론 Docker 이미지는 인터넷으로 주고 받을 수 있다. | ||
- | 특히 요즘은 클라우드 서비스를 | + | 특히 요즘 많이 |
+ | 리눅스를 사용하다 보면 소스를 컴파일해서 설치하거나, | ||
- | 리눅스를 사용하다 보면 소스를 컴파일해서 | + | VMware, VirtualBox 등의 가상 이미지와 |
+ | |||
+ | |||
+ | ====VM의 단점==== | ||
+ | * 불필요한 기능의 중복- 호스트 OS와 게스트OS 간의 기능 중복 | ||
+ | * 상대적으로 무겁다. 오버헤드(15~20%) 정도. | ||
+ | * 배치(Deployment)의 어려움 -동시에 수십개를 설치하는 것이 | ||
- | VMware, VirtualBox 등의 가상 이미지와 스냅샷은 용량이 엄청 큰데요. Docker는 몇 십메가에서 몇 백메가 수준임. 원한다면 10메가 이내로 이미지를 만들 수도 있다. | ||
=====단점===== | =====단점===== | ||
줄 29: | 줄 42: | ||
MS에서 차기 윈도우 서버에 Docker를 지원하겠다고 발표를 했다. 이렇게 되면 윈도우(호스트)-윈도우(컨테이너) 모양으로 실행할 수 있을 것이다. | MS에서 차기 윈도우 서버에 Docker를 지원하겠다고 발표를 했다. 이렇게 되면 윈도우(호스트)-윈도우(컨테이너) 모양으로 실행할 수 있을 것이다. | ||
+ | WSL2를 통해 윈도우 또한 VM을 거치지 않고 Docker를 활용할 수 있게 되었다. | ||
+ | =====설치===== | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | 도커의 판본은 커뮤니티 버전의 docker-ce와 엔터프라이즈 docker-ee로 나뉜다. | ||
+ | 우분투에서는 겹치는 이름을 피하기 위해 패키지 이름이 docker.io였다. | ||
+ | |||
+ | 설치하려면 docker-ce를 설치한다. | ||
+ | |||
+ | ====구판 삭제==== | ||
+ | 혹시 구판이 설치되어 있다면 삭제한다. | ||
+ | sudo apt-get remove docker docker-engine docker.io | ||
+ | |||
+ | ====레포지토리 설정==== | ||
+ | |||
+ | 기본 패키지 확인... 대개는 이미 깔려있댜. | ||
+ | |||
+ | sudo apt-get install \ | ||
+ | apt-transport-https \ | ||
+ | ca-certificates \ | ||
+ | curl \ | ||
+ | software-properties-common | ||
+ | 키추가 | ||
+ | curl -fsSL https:// | ||
+ | |||
+ | sudo add-apt-repository \ | ||
+ | " | ||
+ | | ||
+ | | ||
+ | |||
+ | |||
+ | sudo apt-get update | ||
+ | | ||
+ | sudo apt-get install docker-ce | ||
+ | | ||
+ | ====실행==== | ||
+ | |||
+ | docker run [OPTIONS] IMAGE[: | ||
+ | 다음은 자주 사용하는 옵션들임. | ||
+ | |||
+ | < | ||
+ | 옵션 | ||
+ | -d detached mode 흔히 말하는 백그라운드 모드 | ||
+ | -p 호스트와 컨테이너의 포트를 연결 (포워딩) | ||
+ | -v 호스트와 컨테이너의 디렉토리를 연결 (마운트) | ||
+ | -e 컨테이너 내에서 사용할 환경변수 설정 | ||
+ | –name | ||
+ | –rm 프로세스 종료시 컨테이너 자동 제거 | ||
+ | -it -i와 -t를 동시에 사용한 것으로 터미널 입력을 위한 옵션 | ||
+ | –link | ||
+ | </ | ||
+ | |||
+ | |||
+ | > | ||
+ | |||
+ | |||
+ | https:// | ||
+ | |||
+ | =====Portainer===== | ||
+ | |||
+ | https:// | ||
+ | =====Stacks===== | ||
+ | Stack은 두개 이상의 컨테이너가, | ||
+ | 하나의 Container로 구성할 수도 있지만, Apache용 Container와 Mysql용 Container를 묶어서, 만드는 것도 가능함. | ||
+ | 전자의 경우가 제로보드 Container 후자의 경우가 제로보드 Stack이 되겠다. |