Docker in CentOS 7 minimal

|


출처 : http://www.server-world.info/en/note?os=CentOS_7&p=docker&f=1





0. 사전 설치


CentOS 7 minimal 설치 및 준비

 

필요 PKG 설치 및 업데이트

# yum install -y ntp wget; yum update -y   

# systemctl enable ntpd; systemctl start ntpd

   


   

1. 방화벽 해제 및 SELinux 해제

# systemctl stop firewalld

# systemctl disable firewalld


# vi /etc/sysconfig/selinux

      7 SELINUX=disabled



SELinux 는 재시작 해야 풀린다.

# reboot





2. Docker 설치


# yum -y install docker

# systemctl enable docker

# systemctl start docker



host로 사용할 centos 공식 이미지 Container 생성, 환영 문구 입력

# docker run centos /bin/echo "Welcome to the Docker World" 





3. Docker 실행


i와 t 옵션을 주어 centos 이미지를 bash 쉘로 docker 실행

(옵션 주지 않으면 들어가지지 않는다. 옵션에 대한 연군 필요)

# docker run -i -t centos /bin/bash



Docker system 의 정보 확인


[root@0cf52e8ba14a /]# uname -a

Linux 0cf52e8ba14a 3.10.0-123.el7.x86_64 #1 SMP Mon Jun 30 12:09:22 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux



세션 종료


[root@0cf52e8ba14a /]# exit

exit

#





4. Docker 세션 관리


세션 종료 없이 로그아웃 하기 : Ctrl+p, Ctrl+q 차례대로 입력


[root@d4add7d10c96 /]# [root@localhost ~]# 



세션 종료 없이 종료한, 즉 docker 의 실행 중인 프로세스 확인


# docker ps

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

d4add7d10c96        centos:7               "/bin/bash"          4 minutes ago       Up 4 minutes                                  thirsty_bartik



다시 해당 세션으로 붙기 (Container ID 필요)

# docker attach d4add7d10c96



세션 연결되어 있는, 실행 되어 있는 컨테이너 shutdown

# docker kill d4add7d10c96

# docker ps

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES





5. 이미지 관리


존재하는 이미지 보기

# docker images



centos 이미지에게 직접 명령어 실행

# docker run centos /bin/bash -c "yum -y update; yum -y install httpd"



내가 최근에 쳤던 명령어가 작동 했다는 것 확인

# docker ps -a | head -2

CONTAINER ID        IMAGE               COMMAND                CREATED                  STATUS                      PORTS               NAMES

b0eef33afa44         centos:7            "/bin/bash -c 'yum -    2 minutes ago       Exited (0) 56 seconds ago                       thirsty_albattani



지금 상태의 이미지를 새로운 이미지로 저장 - 스냅샷

# docker commit b0eef33afa44 my_image/centos_httpd

48a0f44b93a5a85cee79add36686c6e590463092cb96bf80a5dbc1c156f3d278



새롭게 추가된 이미지가 보인다.

# docker images

REPOSITORY                   TAG                 IMAGE ID                   CREATED              VIRTUAL SIZE

my_image/centos_httpd    latest               48a0f44b93a5        About a minute ago        478.2 MB

centos                                  7                   8efe422e6104            3 weeks ago                  224 MB

centos                             centos7             8efe422e6104            3 weeks ago                   224 MB

centos                                latest              8efe422e6104            3 weeks ago                    224 MB



내가 만든 이미지에 /usr/bin/which httpd 명령어를 실행 한 결과

# docker run my_image/centos_httpd /usr/bin/which httpd

/usr/sbin/httpd





[실습]


내 8081번 포트를 이미지의 80번 포트와 매핑시키면서 이미지에 접근


# docker run -it -p 8081:80 my_image/centos_httpd /bin/bash

[root@d4add7d10c96 /]# /usr/sbin/httpd &

[root@d4add7d10c96 /]# echo "httpd on Docker Container" > /var/www/html/index.html



세션 종료 없이 로그아웃(Ctrl+p, Ctrl+q 차례대로 입력)해서 실행되고 있는 상황 확인

[root@d4add7d10c96 /]# [root@localhost ~]#


# docker ps

CONTAINER ID                 IMAGE                          COMMAND              CREATED             STATUS                 PORTS                     NAMES

bf5e6b508e53        my_image/centos_httpd:latest   "/bin/bash"         10 minutes ago      Up 10 minutes       0.0.0.0:8081->80/tcp   ecstatic_mcclintock



이제 같은 네트워크단에 있는 pc의 웹 브라우저에서 docker server ip:8081 로 들어가면 제대로 사용되고 있는 것을 알 수 있다.





[etc]


1) Ubuntu 14.04 install & Setting


# docker run -t -i ubuntu:14.04 /bin/bash


root@3eaaa23a2e66:/# ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime

root@3eaaa23a2e66:/# date

Sat Jan 31 00:43:44 KST 2015

root@3eaaa23a2e66:/# apt-get install ntp -y

root@3eaaa23a2e66:/# service ntp start

 * Starting NTP server ntpd  

root@3eaaa23a2e66:/# update-rc.d ntp defaults


And