IT. POST LIST
DOCKER 기본설치
** 해당 작업은 centos7, ubuntu 1.04 에서 진행했습니다.
*참조 : https://subicura.com/2017/01/19/docker-guide-for-beginners-2.html
*참조 : https://subicura.com/2017/01/19/docker-guide-for-beginners-2.html
[ 스크립트 설치 ]
[root@localhost 10:23:58:~]# curl -fsSL https://get.docker.com/ | sh *해당 작업들을 진행 해야 docker server 가 올라옴 usermod -aG docker $USER # 현재 접속중인 사용자에게 권한주기 usermod -aG docker your-user # your-user 사용자에게 권한주기 [ex] [root@localhost 10:23:58:~]# usermod -aG docker root [root@localhost 10:23:58:~]# systemctl start docker.service [root@localhost 10:24:02:~]# ps -ef| grep docker root 18912 1 2 10:24 ? 00:00:00 /usr/bin/dockerd root 18916 18912 0 10:24 ? 00:00:00 docker-containerd --config /var/run/docker/containerd/containerd.toml root 19035 18637 0 10:24 pts/0 00:00:00 grep --color=auto docker [root@localhost 10:24:07:~]# docker version Client: Version: 18.03.0-ce API version: 1.37 Go version: go1.9.4 Git commit: 0520e24 Built: Wed Mar 21 23:09:15 2018 OS/Arch: linux/amd64 Experimental: false Orchestrator: swarm Server: Engine: Version: 18.03.0-ce API version: 1.37 (minimum version 1.12) Go version: go1.9.4 Git commit: 0520e24 Built: Wed Mar 21 23:13:03 2018 OS/Arch: linux/amd64 Experimental: false * 권한 작업을 진행 하지 않으면 에러 메시지와 client 만 올라오는 것 을 확인 할 수 있습니다.
[ yum, apt-get 설치 ]
[ centos 7 ] [root@localhost 10:25:24:~]# yum install docker -y [ ubuntu 16.04 ] [root@localhost 11:25:24:~]# apt-get install docker.io -y [ docker 이미지 다운 및 실행 ] * centos7 에서 ubuntu 16.04 이미지는 docker로 연결합니다. [root@localhost 10:25:24:~]# docker run ubuntu:16.04 Unable to find image 'ubuntu:16.04' locally 16.04: Pulling from library/ubuntu 22dc81ace0ea: Pull complete 1a8b3c87dba3: Pull complete 91390a1c435a: Pull complete 07844b14977e: Pull complete b78396653dae: Pull complete Digest: sha256:e348fbbea0e0a0e73ab0370de151e7800684445c509d46195aef73e090a49bd6 Status: Downloaded newer image for ubuntu:16.04 [root@localhost 10:26:16:~]# docker run --rm -it ubuntu:16.04 /bin/bash root@f1355585392a:/# ll total 20 drwxr-xr-x 21 root root 4096 Mar 27 01:27 ./ drwxr-xr-x 21 root root 4096 Mar 27 01:27 ../ -rwxr-xr-x 1 root root 0 Mar 27 01:27 .dockerenv* drwxr-xr-x 2 root root 4096 Feb 28 19:14 bin/ drwxr-xr-x 2 root root 6 Apr 12 2016 boot/ drwxr-xr-x 5 root root 360 Mar 27 01:27 dev/ drwxr-xr-x 42 root root 4096 Mar 27 01:27 etc/ drwxr-xr-x 2 root root 6 Apr 12 2016 home/ drwxr-xr-x 8 root root 96 Sep 13 2015 lib/ drwxr-xr-x 2 root root 34 Feb 28 19:14 lib64/ drwxr-xr-x 2 root root 6 Feb 28 19:13 media/ drwxr-xr-x 2 root root 6 Feb 28 19:13 mnt/ drwxr-xr-x 2 root root 6 Feb 28 19:13 opt/ dr-xr-xr-x 117 root root 0 Mar 27 01:27 proc/ drwx------ 2 root root 37 Feb 28 19:14 root/ drwxr-xr-x 5 root root 58 Feb 28 19:14 run/ drwxr-xr-x 2 root root 4096 Mar 6 22:17 sbin/ drwxr-xr-x 2 root root 6 Feb 28 19:13 srv/ dr-xr-xr-x 13 root root 0 Mar 27 01:27 sys/ drwxrwxrwt 2 root root 6 Feb 28 19:14 tmp/ drwxr-xr-x 10 root root 105 Feb 28 19:13 usr/ drwxr-xr-x 11 root root 139 Feb 28 19:14 var/ root@f1355585392a:/# uname -a Linux f1355585392a 3.10.0-693.21.1.el7.x86_64 #1 SMP Wed Mar 7 19:03:37 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux root@f1355585392a:/# cat /etc/issue Ubuntu 16.04.4 LTS \n \l
** centos, ubuntu 네트워크 장치명 변경 및 고정
* os 자동화 설치를 운영중에 예상치 못한 상황 발생. 똑같은 메인 보드, 똑같은 펌웨어, 똑같은 os이미지, 똑같은 10G 랜카드를 사용했으나 어떤 서버는 장치명이 정상적으로 고정되지만, 어떤 서버는 장치명이 변경 조차 안되고, 디바이스 장치 순서가 무작위로 변경되는 현상이 발생. (특히 pci 장치 우선순위 무시)* 네트워크 장치명 변경. cento7, ubuntu 14.x ~ 16.04 들은 기존에 사용하던 장치 명들은 eth0 에서 eno1,em1, p2p1 등으로 변경 된다. 변경된 장치명을 사용하면 그만이지만 특정 작업으로 인해 장치명이 변경 되어야 할때가 있어서 불편함이 생기게 되는데 이때 기존에 사용하던 eth 로 변경하면 됩니다.
* centos 6은 기본장치가 eth0 이지만, pci 장치 슬롯을 사용할 경우 장치 순서가 바뀌는 현상이 발생할때 사용했고, 이 포스팅은 pic 10G 랜카드 장착 을 기준으로 작성합니다.
[ centos6 ] [root@localhost ~]# rm -rf /etc/udev/rules.d/70-persistent-net.rules [root@localhost ~]# /etc/init.d/udev-post stop [root@localhost ~]# chkconfig udev-post off [root@localhost ~]# chkconfig --list | grep udev-post udev-post 0:해제 1:활성 2:활성 3:해제 4:활성 5:해제 6:해제 또는 setup, 시스템 서비스에서 udev-post 체크 해제 * centos6 에서는 70-persistent-net.rules 에서 mac address 와 장치명 고정의 필요성을 느끼진 않지만, 작업에 따라서는 고정을 하기도 합니다. 때문에 삭제 해도 무방합니다. [root@localhost ~]# reboot
* centos 7, ubuntu 16.04 는 기본 onborad 장치명은 다르나 변경 방법은 같습니다.
[ centos7, ubuntu 16.04 ] [ ex1. ] =============================================================================================== * 해당 예제는 기본적으로 pci의 우선순위가 먼저이기 때문에 centos6 처럼 70-persistent-net.rules 필요 없게 됩니다. 해당 파일을 삭제 하시거나 내용을 주석 처리 합니다. [root@localhost 03:05:38:~]# vi /etc/default/grub ... GRUB_CMDLINE_LINUX="... net.ifnames=0 biosdevname=0" ... *centos7 [root@localhost 03:05:38:~]# grub2-mkconfig -o /boot/grub2/grub.cfg *ubuntu [root@localhost 03:05:38:~]# update-grub [root@localhost 03:05:38:~]# reboot 또는 [root@localhost 03:05:38:~]# vi /boot/grub2/grub.cfg /vmlinuz 검색 후 해당 라인 맨뒤에 net.ifnames=0 biosdevname=0 삽입(사용 커널 순서) [root@localhost 03:05:38:~]# reboot * 해당 작업이 끝나면 모든 네트워크 장치명은 eht0,1,2 등으로 변경이 됩니다. ifcfg-eth0, interface 파일의 내용 역시 수정 해야 합니다. =============================================================================================== [ ex2. ] =============================================================================================== [root@localhost 03:05:38:~]# vi /etc/udev/rules.d/70-persistent-net.rules SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="{MacAddress}", ATTR{type}=="1", KERNEL=="{장치명}", NAME="eth0" * 채색 부분에 맥주소와, 기존 기바이스 장치명 [root@localhost 03:05:38:~]# reboot * 해당 방법은 다른 장치는 변경 하지 않고, 70-persistent-net.rules 에 입력된 맥주소의 장치명만 변경 하게 됩니다. =============================================================================================== [ ex3. ] =============================================================================================== * 10G 랜카드를 이용하든, 안하는 위 3가지 방법이면 전부 해결이 될 것 입니다. 하지만 꼭 변수가 생기기 마련이니다. 맨위에 말했듯이 모두 동일한 조건이지만 pci 슬롯이 우선순위를 못잡고, 계속 장비명이 변경 되는 일이 발생 할때한 작업입니다. 해당 방법이 정답은 아닙니지만, 원인 파악 할때까지는 사용할 수 있는 방법 입니다. * centos7 [root@localhost ]# rmmod igb [root@localhost ]# rmmod ixgbe [root@localhost ]# modprobe ixgbe [root@localhost ]# modprobe igb [root@localhost ]# ifup eth0 [root@localhost ]# ifup eth1 [root@localhost ]# vi /etc/init.d/Network_Sort rmmod igb rmmod ixgbe modprobe ixgbe modprobe igb ifup eth0 ifup eth1 [root@localhost ]# chmod 755 /etc/init.d/Network_Sort [root@localhost ]# vi /etc/rc.local /etc/init.d/Network_Sort * 1G모듈과 10G 모듈을 둘다 제거 후 등록 하면, 우선으로 올린 모듈이 eth0으로 잡히게 됩니다. 확인은 modprobe ixgbe 후 ip link 를 입력하시면 장치명을 확인 할 수 있습니다. *ubuntu [root@localhost ]# rmmod igb [root@localhost ]# rmmod ixgbe [root@localhost ]# modprobe ixgbe [root@localhost ]# vi /etc/modprobe.d/blacklist.conf black list igb [root@localhost ]# update-initramfs -u [root@localhost ]# reboot *centos7 (cent7은 blacklist에 따로 작성 안하고 grub cmd line에서 해당 모듈 등록 후 적용) [root@localhost ]# vi /etc/default/grub GRUB_CMDLINE_LINUX="crashkernel=auto vconsole.font=latarcyrheb-sun16 vconsole.keymap=ko net.ifnames=0 biosdevname=0 blacklist=igb igb.modeset=0" [root@localhost ]# grub2-mkconfig -o /boot/grub2/grub.cfg [root@localhost ]# reboot 또는 [root@localhost 03:05:38:~]# vi /boot/grub2/grub.cfg /vmlinuz 검색 후 해당 라인 맨뒤에 blacklist=igb igb.modeset=0 삽입(사용 커널 순서) [root@localhost 03:05:38:~]# reboot ubuntu 14.04 부터 장치명 변경은 꼭 말썽이었습니다. 장치명 변경을 거부 한다는 느낌으로.... ubuntu 역시 centos7 과 같은 방법으로 진행하게 되면 되지만 이상하게 바로 올라오지 않는 경우가 생겨 버립니다...머리가 아파 옵니다. 다행이 필자는 서버 개설시 10G 만 공인 ip 사용하고, 1G는 사설로 자동개통 사용하기 때문에 1G 모듈은 영구제명 시켜 버렸습니다.;;( 필자의 서버는 클라이언트 들이 사용하는 지라.. 빠른 개설을 위해...다른 분들은 시간이 걸려도 위 방법으로 구동하시고, 원인파악을 하기 바랍니다.) ==============================================================================================