서비스 이용안내

Docker(도커) 서비스 on IWINV 가상서버


IWINV 서비스의 가상 서버에서 Container 기반 docker를 운영할경우 적용해야할 네트워크 설정 사항에 대해 안내해드립니다.

IWINV 가상서버는 인스턴스내 MTU 를 1450으로 운영중이며 docker내 기본 MTU 1500으로 설정하게 되면 패킷사이즈를 초과하기에 네트워크 실행부분에서 오류가 발생하게 됩니다. 
따라서 아래와 같은 방법으로 MTU 값을 수정하여 이용하시기 바랍니다.

여기서는 IWINV Ubuntu 16.04 64bit 서버에 docker를 설치하고 문제 발생사항과 해결 과정에 대해서 기술 하겠습니다.


테스트 환경 

상품 : IWINV rCore.S3 (8Core / 24GB Memory / 25G SSD)
OS : Ubuntu 16.04 64bit

 

- IWINV 가상 서버에 docker 패키지 설치


root@docker-test:~# apt-get update && apt-get dist-upgrade

root@docker-test:~# apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
Executing: /tmp/tmp.fJD5sZHPlI/gpg.1.sh --keyserver
hkp://p80.pool.sks-keyservers.net:80
--recv-keys
58118E89F3A912897C070ADBF76221572C52609D
gpg: requesting key 2C52609D from hkp server p80.pool.sks-keyservers.net
gpg: key 2C52609D: public key "Docker Release Tool (releasedocker) <docker@docker.com>" imported
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)
※ 서버에 docker 공식 저장소의 GPG key 추가

root@docker-test:~# apt-add-repository 'deb https://apt.dockerproject.org/repo ubuntu-xenial main'
※ 서버에 apt 소스에 docker 저장소 추가

root@docker-test:~# apt-get update
Get:1 https://apt.dockerproject.org/repo ubuntu-xenial InRelease [48.7 kB]
Get:2 http://security.ubuntu.com/ubuntu xenial-security InRelease [102 kB]
Get:3 https://apt.dockerproject.org/repo ubuntu-xenial/main amd64 Packages [3,999 B] 
Hit:4 http://rCore-8.clouds.archive.ubuntu.com/ubuntu xenial InRelease                                                                 
Get:5 http://rCore-8.clouds.archive.ubuntu.com/ubuntu xenial-updates InRelease [102 kB]
Get:6 http://rCore-8.clouds.archive.ubuntu.com/ubuntu xenial-backports InRelease [102 kB]
Fetched 359 kB in 3s (119 kB/s)    
Reading package lists... Done
※ 새 저장소에서 패키지 업데이트

root@docker-test:~# apt-get install -y docker-engine
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  linux-headers-4.4.0-59 linux-headers-4.4.0-59-generic linux-image-4.4.0-59-generic
Use 'apt autoremove' to remove them.
The following additional packages will be installed:
  aufs-tools cgroupfs-mount libltdl7
Suggested packages:
  mountall
The following NEW packages will be installed:
  aufs-tools cgroupfs-mount docker-engine libltdl7
0 upgraded, 4 newly installed, 0 to remove and 0 not upgraded.
Need to get 18.1 MB of archives.
After this operation, 85.2 MB of additional disk space will be used.
※ docker 설치

root@docker-test:~# dpkg -l |grep docker
ii  docker-engine                    17.04.0~ce-0~ubuntu-xenial                 amd64        Docker: the open-source application container engine

- docker 이미지 다운로드


root@docker-test:~# docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
78445dd45222: Pull complete 
Digest: sha256:c5515758d4c5e1e838e9cd307f6c6a0d620b5e07e6f927b07d05f6d12a1ac8d7
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.
..
..
※ 위와 같이 출력되면 정상적으로 설치.

root@docker-test:~# docker search ubuntu
NAME                                         DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
ubuntu                                       Ubuntu is a Debian-based Linux operating s...   5878      [OK]       
rastasheep/ubuntu-sshd                       Dockerized SSH service, built on top of of...   80                   [OK]
ubuntu-upstart                               Upstart is an event-based replacement for ...   71        [OK]       
ubuntu-debootstrap                           debootstrap --variant=minbase --components...   30        [OK]       
torusware/speedus-ubuntu                     Always updated official Ubuntu docker imag...   27                   [OK]
nuagebec/ubuntu                              Simple always updated Ubuntu docker images...   19                   [OK]
nickistre/ubuntu-lamp                        LAMP server on Ubuntu                           16                   [OK]
nimmis/ubuntu                                This is a docker images different LTS vers...   7                    [OK]
darksheer/ubuntu                             Base Ubuntu Image -- Updated hourly             2                    [OK]
admiringworm/ubuntu                          Base ubuntu images based on the official u...   1                    [OK]
jordi/ubuntu                                 Ubuntu Base Image                               1                    [OK]
labengine/ubuntu                             Images base ubuntu                              0                    [OK]
webhippie/ubuntu                             Docker images for ubuntu                        0                    [OK]
vcatechnology/ubuntu                         A Ubuntu image that is updated daily            0                    [OK]
forumi0721ubuntux64/ubuntu-x64-dev           ubuntu-x64-dev                                  0                    [OK]
datenbetrieb/ubuntu                          custom flavor of the official ubuntu base ...   0                    [OK]
konstruktoid/ubuntu                          Ubuntu base image                               0                    [OK]
forumi0721ubuntuarmhf/ubuntu-armhf-dev       ubuntu-armhf-dev                                0                    [OK]
forumi0721ubuntuaarch64/ubuntu-aarch64-dev   ubuntu-aarch64-dev                              0                    [OK]
lynxtp/ubuntu                                https://github.com/lynxtp/docker-ubuntu         0                    [OK]
teamrock/ubuntu                              TeamRock's Ubuntu image configured with AW...   0                    [OK]
forumi0721ubuntux64/ubuntu-x64-dev-armbian   ubuntu-x64-dev-armbian                          0                    [OK]
esycat/ubuntu                                Ubuntu LTS                                      0                    [OK]
forumi0721ubuntux64/ubuntu-x64-dev-android   ubuntu-x64-dev-android                          0                    [OK]
smartentry/ubuntu                            ubuntu with smartentry                          0                    [OK]
※ ubuntu image 확인

root@docker-test:~# docker pull ubuntu
Using default tag: latest
latest: Pulling from library/ubuntu
c62795f78da9: Pull complete 
d4fceeeb758e: Pull complete 
5c9125a401ae: Pull complete 
0062f774e994: Pull complete 
6b33fd031fac: Pull complete 
Digest: sha256:c2bbf50d276508d73dd865cda7b4ee9b5243f2648647d21e3a471dd3cc4209a0
Status: Downloaded newer image for ubuntu:latest
※ ubuntu image 다운로드

root@docker-test:~# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              latest              6a2f32de169d        5 days ago          117MB
hello-world         latest              48b5124b2768        3 months ago        1.84kB

- 컨테이너 생성후 apt update로 문제 사항 확인


root@docker-test:~# docker run -it ubuntu

root@dca1c02bf8f2:/# apt-get update
0% [Waiting for headers] [Waiting for headers]
※ update가 진행이 안되는 문제 발생하며 ftp 등 일부 서비스에서 문제 발생.

root@docker-test:~# docker run -it centos:6.8

[root@580606d04fad /]# ifconfig 
eth0      Link encap:Ethernet  HWaddr 02:42:AC:11:00:02  
          inet addr:172.17.0.2  Bcast:0.0.0.0  Mask:255.255.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:8 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:648 (648.0 b)  TX bytes:0 (0.0 b)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

[root@580606d04fad /]# yum update
Loaded plugins: fastestmirror, ovl
Setting up Update Process
http://mirror.oasis.onnetcorp.com/centos/6.9/os/x86_64/repodata/repomd.xml: [Errno 12] Timeout on http://mirror.oasis.onnetcorp.com/centos/6.9/os/x86_64.....
Trying other mirror.
※ redhat 계열인 centos에서도 동일한 문제가 발생하며 네트웍 디바이스의 MTU 값이 1500으로 확인된다.

 

- 문제 해결


root@docker-test:~# cp /lib/systemd/system/docker.service /etc/systemd/system/docker.service
'/lib/systemd/system/docker.service' -> '/etc/systemd/system/docker.service'
※ docker.service 파일 복사

root@docker-test:~# cat /etc/systemd/system/docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target docker.socket firewalld.service
Wants=network-online.target
Requires=docker.socket

[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd -H fd:// --mtu 1450   # 해당 옵션 추가
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=1048576
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
# restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s

[Install]
WantedBy=multi-user.target
※ IWINV 서비스의 인스턴스 MTU 값은 1450이며 1500으로 설정된 컨테이너 MTU값을 기본값 1450으로 변경한다.

root@docker-test:~# systemctl daemon-reload

root@docker-test:~# service docker restart 
※ 데몬 리로드후 서비스 재시작

- 컨테이너 생성후 확인


root@docker-test:~# docker run -it ubuntu
root@f0971e2d20fe:/# apt-get update
Get:1 http://security.ubuntu.com/ubuntu xenial-security InRelease [102 kB]
Get:2 http://archive.ubuntu.com/ubuntu xenial InRelease [247 kB]
..
..                                                                                                                       
Get:21 http://archive.ubuntu.com/ubuntu xenial-backports/universe amd64 Packages [2567 B]                                                                                                                       
Fetched 23.9 MB in 7s (3305 kB/s)                                                                                                                                                                               
Reading package lists... Done
※ 우분투 컨테이너에서 update 정상 확인

root@docker-test:~# docker run -it centos:6.8
[root@cd79e4f37d11 /]# ifconfig 
eth0      Link encap:Ethernet  HWaddr 02:42:AC:11:00:02  
          inet addr:172.17.0.2  Bcast:0.0.0.0  Mask:255.255.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1450  Metric:1
          RX packets:5 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:418 (418.0 b)  TX bytes:0 (0.0 b)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

root@cd79e4f37d11 /]# yum update
Loaded plugins: fastestmirror, ovl
Setting up Update Process
base                                                                                                                                                                                      | 3.7 kB     00:00     
base/primary_db                                                                                                                                                                           | 4.7 MB     00:00     
extras                                                                                                                                                                                    | 3.4 kB     00:00     
extras/primary_db                                                                                                                                                                         |  37 kB     00:00     
updates                                                                                                                                                                                   | 3.4 kB     00:00     
updates/primary_db                                                                                                                                                                        | 703 kB     00:00     
Resolving Dependencies
--> Running transaction check
---> Package audit-libs.x86_64 0:2.4.5-3.el6 will be updated
---> Package audit-libs.x86_64 0:2.4.5-6.el6 will be an update
..
..
Upgrade      56 Package(s)

Total download size: 47 M
※ centos 컨테이너에서 update 및 MTU값 1450 확인

 

 ※ docker 운영시 네트웍 생성할때에는 MTU 옵션을 1450 으로 수정해야 합니다.
      EX) docker network create -o "com.docker.network.driver.mtu"="1450" 참고 사이트 클릭