Docker를 학습하기 전 리눅스 컨테이너에 대한 이해가 필요하여 내용을 정리한다.
OS의 내부
- 물리적 자원을 관리하는 커널 공간
- 사용자 프로세스를 실행하는 사용자 공간
기존 가상화 기술
- OS위에 또 하나의 OS가 동작
- 호스트 OS와 게스트 OS를 완전 분리 할 수 있는 장점
LXC (리눅스 컨테이너)
- 모든 프로세스는 호스트 OS에서 바로 시작
- 일반적인 프로세스의 동작과 다른 점은 그 과정의 일부를 그룹화하고 다른 그룹이나 그룹에 속하지 않는 프로세스에서 단절된 공간으로 동작
- 화물 컨테이너처럼 독립된 공간에 프로세스가 들어 있기 때문에 이 공간을 '컨테이너'라고 부른다.
- 가상 머신 부팅 및 종료 개념이 없기 때문에 가상 환경의 시작과 종료가 빠름
기존의 가상화 기술들을 하드웨어 환경을 가상화하는데 비해 컨테이너 방식은 OS에서 관리되기 때문에 "OS 레벨의 가상화"라고 불리기도 한다.
[LXC 설치 및 실행]
테스트 환경은 ubuntu 14.04
설치
# sudo apt-get install lxc
네트워크 및 설정 확인
# lxc-checkconfig
컨테이너 생성
# sudo lxc-create -n test-container -t ubuntu
-n : NAME of the container
-t : Template to use to setup container
컨테이너가 생성되면 기본 계정 및 패스워드는 ubuntu/ubuntu 이다.
컨테이너 상태
# sudo lxc-ls --fancy
컨테이너 실행
# sudo lxc-start -n test-container -d
# sudo lxc-ls --fancy 실행하면 다음과 같이 test-container 상태가 RUNNING으로 되어 있는 것을 확인할 수 있다.
NAME STATE IPV4 IPV6 AUTOSTART
----------------------------------------------------
test-container RUNNING 10.0.3.173 - NO
컨테이너 중지
# sudo lxc-stop -n test-container
컨테이너 삭제
# sudo lxc-destroy -n test-container
컨테이너 접속
# sudo lxc-console -n test-container
테스트를 위한 nginx 설치하기
sudo apt-get install nginx
sudo service nginx start
sudo apt-get install wget vi
포트 포워딩
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 9090 -j DNAT --to 10.0.3.173:80
컨테이너 제한 추가
/var/lib/lxc/test-container 디렉토리의 config 파일에서 관리
참고 URL
https://www.digitalocean.com/community/tutorials/getting-started-with-lxc-on-an-ubuntu-13-04-vps
'서버' 카테고리의 다른 글
Google App Engine 환경에 Spring Boot 배포하기 (0) | 2017.08.09 |
---|---|
kubernetes 정리 (2) | 2017.01.12 |
Kubernetes 설치 (6) | 2017.01.12 |
Docker 정리 (2) | 2017.01.04 |
MQTT (mosquitto broker 오픈소스) (0) | 2016.11.02 |
tomcat 구동 시 /dev/random 블로킹 이슈 (6) | 2016.08.25 |
Nginx (0) | 2016.07.15 |
Apache worker 파일에 template 적용하기 (0) | 2016.01.22 |