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