차이
문서의 선택한 두 판 사이의 차이를 보여줍니다.
| 양쪽 이전 판이전 판다음 판 | 이전 판 | ||
| 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이 되겠다. | ||