카테고리 보관물: docker

LXC 와 Docker와의 차이점.

Docker와의 차이

최근에는 Docker이 크게 주목 받고 왔습니다. 그래서인지 LXCF와 Docker는 무엇이 다른가?  최근 자주 만나는됩니다. 쉽게 차이점에 대해 말해 봅시다. Docker은 내가 Web 상 등에서 여러가지 지금까지보고들은 정보 나 실제로 사용해 본 경험을 바탕으로합니다.
Docker도 LXCF도 모두 컨테이너 기술을 기반으로하고 있습니다. 그러나 지향해야 할 목표는 각각 다르며, 따라서 구조와 사용법 등은 크게 다릅니다.

특징의 차이

LXCF은 다음과 같은 특징을 가지고 있습니다.

– 자유 가변 시스템
LXCF은 자유롭게 시스템을 구축 할 수 있습니다. LXCF에서 구축 한 환경은 항상 최신 상태로 유지하도록 업데이트하고 소중하게 오래 사용 나갈 수 있습니다.
LXCF은 HOST의 OS 환경을 바탕으로 생성되어 더 HOST는 다른 시스템 환경 수도 일반 시스템 관리의 방법으로 할 수 있습니다.
LXCF 오버 헤드없이 효율적인 VM으로 자리 매김해도 좋을 것입니다.

– HOST와 같은 환경
HOST와 같은 환경을 언제든지 생성 할 수 있기 때문에 설치가 간단합니다. 또한 불특정 다수가 만든 OS 이미지를 바탕으로 한 시스템보안은 아무래도 불안을 떨칠 수 없지만 LXCF는 항상베이스가 자신의 HOST 환경이며 보안을 유지하는 것이 더 용이합니다.

– 하나의 컨테이너에서 다채로운 기능 실행 다수의 서버 프로세스
LXCF는 하나의 컨테이너에서 HOST와 같은 서버 기능을 실행할 수 있습니다. 이를 위해 systemd를 통해 서버 프로세스를 시스템 데몬으로 시작합니다.
시스템 데몬은 systemd의 조작으로 컨테이너마다 멈추거나 시작할 수 있습니다.
Docker의 경우는 데몬에서 이벤트 수신을하거나 비정상적으로 중지 된 프로세스를 다시 시작하는 경우에는 어떠한 수단을 추가해야 하지만 LXCF는 systemd를 사용하여 데몬 프로세스를 일반 OS와 마찬가지로 관리 할 수​​ 있습니다.

Docker는 다음과 같은 특징을 가지고 있다고 나는 생각합니다.

– Immutable 시스템
시스템으로 생성 된 이미지는 업데이트 및 유지 보수를하는 것이 아니라, 새로운 버전의 시스템이 나왔을 때 이전 버전의 시스템은 버리고 만다. 즉, 항상 최신의 시스템을 사용하여 내용을 변경하지 않고 Immutalbe (불변) 시스템으로 사용합니다. 이는 고장나면 버리면되고, 오래되면 새 것으로 바꾸면 ​​된다는 생각입니다.
클라우드에서 향후 이러한 운용이 늘어난다는 것이겠지요.

– 휴대용 애플리케이션
Docker는 응용 프로그램에 필요한 라이브러리 및 명령을 포함합니다. 따라서 어느 환경에 가져가도 응용 프로그램이 작동합니다. 또한 응용 프로그램이 사용하는 것만 포함하면되므로 이미지의 크기가 줄어 듭니다.

– 하나의 컨테이너에 하나의 기능, 하나의 프로세스
하나의 Docker 컨테이너는 목적으로하는 응용 프로그램을 실행하기 위해 여러가지 프로그램을 실행할 필요가 없습니다. 또한 응용 프로그램을 실행하는 데 최소한의 프로세스 만 동작하면된다는 생각입니다. 따라서 응용 프로그램을 효율적으로 압축 할 수 있습니다.
정리

LXCF는 기존의 VM의 대안으로 설계되어 있습니다.
LXCF은 몇 초만에 부팅하여 오버 헤드가 0인 VM처럼 작동합니다.
또한 같은 컨테이너 기술을 기반으로하고 있어도 LXCF은 Docker 대신하지 않습니다. 마찬가지로 Docker를 LXCF를 대체하는 것은 어려울 것입니다.
당연한 결론입니다 만 적재 적소에 사용하는 것이 좋습니다.

그러나 Docker는 할 수없는 것이 LXCF에서 가능합니다.

 

https://osdn.jp/projects/lxcf/wiki/Dockerとの違い

을 번역함.

docker install 및 instance 생성

docker install

$ sudo tee /etc/yum.repos.d/docker.repo <<-'EOF'
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/fedora/$releasever/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
EOF
### docker repository 생성 ###

$ sudo yum install docker-engine
### docker-engine install ###

$ sudo systemctl start docker
### docker service start ### 

$ vim /etc/group
docker:x:971:youngju.lee
명령어 앞에 sudo를 붙이지 않기 위해 사용자를 docker 보조 그룹으로 넣는다. 
이 때 logout 한번 해야지 제대로 동작을 한다. 

$ docker search cirros
### docker image 검색. test용도로 용량이 적은 cirros 를 검색함 ###

$ docker pull cirros
### cirros image download ### 

$ docker run -it cirros sh
### down 받은 cirros image를 이용해서 instance 를 만든 후 booting 시킨다. instance booting 시킬 때 sh을 실행 시킨다. ### 

위 명령어를 실행 시키면 명령어 프롬프트가 아래와 같이 바뀐다. 
/ #
instance 기동 및 sh 이 실행 된 것이다. ip 정보 및 몇몇 기본 정보들은 랜덤으로 설정 된다. 

나가려면 기존과 같이 'contorl + d' or '$ exit' 명령어로 나가면 된다. 

$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS               NAMES
b6a002d7065a        cirros              "sh"                     29 minutes ago      Up 3 minutes                                   serene_northcutt
### docker instance 목록을 보여준다. ###

$ docker kill serene_northcutt
### docker instance 를 종료 시킨다. 이때 위에서 검색한 docker instance name 을 인수로 지정해 줘야 한다. 
docker instance name은 특별히 지정하지 않으면 랜덤하게 생성 된다. ### 

$ docker start serene_northcutt  
### docker instance start ### 

다시 접속을 하려면 
$ docker exec -it serene_northcutt sh 
이렇게 하면 됨.

다음엔 Dockerfile 을 이용한 docker build를 해봐야겠다. 
docker search openstack 을 해보면 openstack controller-node 와 compute-node 를 전부 docker를 이용해서 올려둔 것을 볼 수 있다. 
docker를 쓸 줄만 알면 openstack을 설치 할 필요 없이 남이 설치 해둔 것을 땡겨와서 쓰면 그만인 것이다. 
이제 슬슬 System Engineer가 할일이 정말 없어진다... 밥벌어 먹고 살 수 있을지 걱정된다.. 흐흐ㅡ흐르륵..흙..

docker …

주말에 나가는 리눅스 커널 모임에서 docker 라는 말을 많이 들었다.

듣기만 했지 해본적은 없었는데 얼마전 지인분께서 소개 시켜주어서 약간 접해 보았다.

docker 라고 이름지어진것도 docker 로고에 왜 고래가 짐들을 옮기고 있는건지도 약간 이해 할 수 있게 되엇다.

dock : 부두 선창 이라는 뜻을 가진 이 단어에서 비롯됫다고 하는데 마치 docker 하나하나가 host에 포팅 되는 것을 표현 하려고 이렇게 만든 것 같다.

가상 머신 같은 경우는 host에서 띄울려면 여러가지 해줘야 할 것들이 많은데 docker 같은 경우는 docker를 설치 해주고 img 만 가져오면 바로 실행 시킬 수 있다.

docker는 shell script의 정수 이다.

dockerfile을 만들때는 몇가지 제한이 있는데 이때 명령어가 127 줄이 넘어가면 안되기 때문에 온갖 방법을 다 이용해서 dockerfile을 만들게 된다.

가볍다는 점을 이용해서 test할때나 임시로 뭔가 할때에 사용되면 좋을 것 같다.

docker site에 가면 git 마냥(명령어가 git과 비슷함)  img를 다운받고 할 수 있는데 온갖게 다잇더라. openstack도 있고 ovirt도 있고…. 누군가가 먼저 다 만들어 놧더라.

ovirt 3.6 부터는 google에서 만든 kubernate 라는 docker 관리 system 같은게 잇는데 이것도 같이 쓸 수 있게 되엇다.

암턴 시간날때 docker도 해봐야겟다. ㅎㅎ