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


[20] 실전문제, DNS 라운드 로빈

|


- 2015.01.30




[실전 문제 1]







Server1

ip : 10.10.10.10 / 24

g/w : 10.10.10.254

dns : 127.0.0.1


DNS 역할 추가 : 20.20.20.20 <-> www.samadal.com



Server2

ip : 20.20.20.20 / 24

g/w : 20.20.20.254

dns : 10.10.10.10


C:\itbank 폴더 만들어 공유 설정



Router1 - 시리얼 모듈 1개 추가

en

conf t

int f 0/0      !! Server1 과 연결됨

 ip add 10.10.10.254 255.255.255.0

 dup auto

 no shut

 exit

int f 0/1      !! Server2 와 연결됨

 ip add 20.20.20.254 255.255.255.0

 dup auto

 no shut

 exit

int s 0/0      !! Router2 와 연결됨

 ip add 200.200.200.1 255.255.255.0

 no shut

 exit

router eigrp 1

 no auto

 network 10.10.10.0

 network 20.20.20.0

 network 200.200.200.0

end


Router2 - 시리얼 모듈 1개 추가

en

conf t

int f 0/0      !! Server3과 연결됨

 ip add 100.100.100.254 255.255.255.0

 dup auto

 no shut

 exit

int s 0/0      !! Router1 와 연결됨

 ip add 200.200.200.2 255.255.255.0

 no shut

 exit

router eigrp 1

 no auto

 network 100.100.100.0

 network 200.200.200.0

end





DNS 라운드 로빈


server1 과 server2 에 같은 웹 페이지로 서비스 하고 있고, server3에 DNS를 구축하여 라운드로빈을 적용하면

client는 server1 과 server2 에 번갈아 가면서 접속한다. 즉 A 레코드를 1개 추가하는 것 만으로 로드밸런싱 구축 가능.

그러나 DNS 서버는 server1 과 server2의 장애 및 ip 주소 변경을 체크할 수 없다는 단점이 있다.

(But, 실제로는 네트워크 장비단에서 server1 과 server2 로 접속을 돌리는 로드밸런싱을 주로 사용한다. - 고가)



[사용 방법]


DNS 관리자 에서 server1 속성 - 고급 - 라운드 로빈 사용 이 기본 체크 되어있다.



[실습]


역할 추가 : IIS 웹서비스 - ASP.NET - 설치



같은 도메인 주소에 대해 각기 다른 server의 ip를 중복 입력한 뒤 라운드 로빈 설정



And


[19] GNS 이용한 통신 설정

|


- 2015.01.29




[GNS 이용한 통신 실습 연습]


1) GNS 설치 및 셋팅


2) VMware 의 2개 서버에 각각 다른 2개의 NIC 연결


3) GNS 에서 클라우드 2개를 꺼내 각각 NIC에 연결


4) GNS 내 라우터를 꺼내 클라우드 - 라우터 - 클라우드 연결


5) GNS의 라우터는 CPU를 잡아먹는다. 라우터 오른클릭 - IDLE PC values 값 조정하면서 CPU 사용량 조정


6) VM1은 라우터의 f0/0으로, VM2는 f0/1 로 설정


7) 라우터 오른 클릭하여 콘솔 실행한 뒤 아래와 같은 명령어 입력

en

conf t

int f 0/0

 ip add 100.100.100.254 255.255.255.0

 no shut

int f 0/1

 ip add 200.200.200.254 255.255.255.0

 no shut

end





[GNS를 이용한 통신 실습]


server1 - VM1 - (f0/0)라우터1(f0/1) - (f0/0)라우터2(f0/1) - VM2 - server2

             10번대                          20번대                            30번대

 

1) server1 설정

ip : 10.10.10.10

netmask : 255.255.255.0

gateway : 10.10.10.254


2) 라우터1 설정

en

conf t

int f 0/0

 ip add 10.10.10.254 255.255.255.0

 no shut

 exit

int f 0/1

 ip add 20.20.20.1 255.255.255.0

 no shut

 exit

ip route 30.30.30.0 255.255.255.0 f0/1

end


3) 라우터2 설정

en

conf t

int f 0/0

 ip add 20.20.20.2 255.255.255.0

 no shut

 exit

int f 0/1

 ip add 30.30.30.254 255.255.255.0

 no shut

 exit

ip route 10.10.10.0 255.255.255.0 f0/0

end


4) server2 설정

ip : 30.30.30.30

netmask : 255.255.255.0

gateway : 30.30.30.254




And