티스토리 뷰

Getting Started with Docker.



작년 이맘때쯤 커뮤니티 내에 핫하게 화두가 되었었던 Docker를

이용해 가상의 개발환경 구축하는 과정을 진행해 보고자 한다.

Docker를 가상머신의 개념이라 생각 할 수도 있지만

가상머신의 경우 H/W Level에서의 가상화라고 볼 수 있다.

Docker의 경우 개발 환경을 가상화 함으로써, 다른 Container와 커널 자원을 

유하되 실행 프로세스만 독립적으로 분리한 개념이라고 볼 수 있다.


출처 : https://www.docker.com/whatisdocker/ 


설치 및 사용방법을 통해 자세히 알아보도록 하겠다.

기본적으로 설치 환경은 Ubuntu 14.04 LTS기준으로

작성하였다.


step 1. Docker 설치

설치방법은 OS별로 차이는 있으나 Linux기반에서만 작동한다는 것을 염두해 두어야 한다.

이유는 Docker의 가상화 방법이 LXC (LinuX Containers)를 사용하기 때문이다.

( LXC 참조 : http://ko.wikipedia.org/wiki/LXC )

설치 URL : http://docs.docker.com/installation/ubuntulinux/


아래 두가지 방법 중 한가지 방법을 이용하여 설치하면 된다.


1. Ubuntu Trusty 14.04 저장소에 등록된 Docker 설치 시  

$ sudo apt-get update

$ sudo apt-get install docker.io


2. 최신 버전의 Docker 설치 시

$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9

$ sudo sh -c "echo deb https://get.docker.com/ubuntu docker main\

> /etc/apt/sources.list.d/docker.list"


$ sudo apt-get update

$ sudo apt-get install lxc-docker


3. docker group 계정 추가 시

docker command는 대부분 sudo 권한을 필요로 하는데 그룹을 추가함으로써 sudo없이 

실행이 가능하다.

$ sudo groupadd docker

$ sudo gpasswd -a ${USER} docker

$ sudo service docker restart


step 2. Docker 이미지 및 컨테이너 관리

Docker를 이해하기 위해 image의 개념과 Container의 개념을 이해해야 하는데
Image는 단순히 Ghost나 가상머신의 이미지와 같이 운영체제를 실행하기 위한
파일의 개념이라고 볼 수 있다. Ghost와 같이 Container를 Image화 시킬 수 
있어 다른 시스템에 그대로 복사가 가능하다.

1. Docker 실행

$ sudo docker run ubuntu:14.04 /bin/echo 'Hello world'

또는

$ sudo docker run -i -t ubuntu /bin/bash



2. Docker Container 확인

$ sudo docker ps -a
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS                     PORTS               NAMES
bee11458581b        ubuntu:14.04        "/bin/echo 'Hello wo   2 hours ago         Exited (0) 2 hours ago                         cranky_carson
67fc4ad9222b        ubuntu:14.04        "/bin/bash"            2 hours ago         Exited (1) 3 minutes ago                       kickass_darwin



3. Docker Container 실행 및 종료

시작하기 

$ sudo docker start 67fc4ad9222b


접속하기

$ sudo docker attach 67fc4ad9222b


종료하기

$ sudo docker stop 67fc4ad9222b


3. Docker image 확인

$ sudo docker images -a

REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE

ubuntu              14.04               2d24f826cb16        2 weeks ago         188.3 MB

ubuntu              latest              2d24f826cb16        2 weeks ago         188.3 MB

<none>              <none>              117ee323aaa9        2 weeks ago         188.3 MB

<none>              <none>              1c8294cc5160        2 weeks ago         188.3 MB

<none>              <none>              fa4fd76b09ce        2 weeks ago         188.1 MB

<none>              <none>              511136ea3c5a        21 months ago       0 B



step 3. Docker image 생성

이미지 생성의 경우에도 그리 어렵지 않게 생성이 가능하다.

image생성 테스트를 위해 

container 접속 -> git 설치 -> container 종료 -> image 생성 및 Container 실행

위와같이 간단한 시나리오를 진행하였다.


1. Container 접속

$ sudo docker start 67fc4ad9222b

$ sudo docker attach 67fc4ad9222b


2. GIT 설치

root@67fc4ad9222b:/# sudo apt-get install git


3. Image 생성 및 Container 실행

Image를 생성 할 container의 ID값을 입력 후 commit 하면 생성이 완료된다.

root@67fc4ad9222b:/# exit


$ sudo docker commit 67fc4ad9222b ubuntu:git

0874e4429959da76925516df734565c18ca1604cebc2345c372dbe3d388abb36


$ sudo docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
ubuntu              git                 0874e4429959        28 minutes ago      226 MB
ubuntu              14.04               2d24f826cb16        2 weeks ago         188.3 MB
ubuntu              latest              2d24f826cb16        2 weeks ago         188.3 MB


$ sudo docker run -i -t ubuntu:git /bin/bash

$ root@6141ff6a5612:/# exit

$ sudo docker ps -a
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS                      PORTS               NAMES
6141ff6a5612        ubuntu:git          "/bin/bash"            8 seconds ago       Exited (0) 4 seconds ago                        compassionate_poitras
bee11458581b        ubuntu:14.04        "/bin/echo 'Hello wo   3 hours ago         Exited (0) 3 hours ago                          cranky_carson
67fc4ad9222b        ubuntu:14.04        "/bin/bash"            3 hours ago         Exited (1) 14 minutes ago                       kickass_darwin

이제 ubuntu:git image를 통해 git이 설치되어 있는 Container를 생성 할 수 있다.


4. Container 및 Image 삭제

이미지 삭제 시에는 해당 Image로 실행되는 Container를 먼저 제거한 후에

삭제가 가능하다.

$ sudo docker rm <Container ID>

$ sudo docker rmi <Image>


step 4. Docker image 생성

생성한 이미지를 Import 또는 Export 할 수 있다.

Export

$ sudo docker save -o <save image to path> <image name>


Import

$ sudo docker load -i <path to image tar file>


이로써 Docker의 기본적인 Cycle을 경험해 보았다.

다음번엔 Dockerfile을 이용한 이미지 설치 방법 대해 진행과정을

정리해보도록 하겠다.


댓글