Install Docker

Install Docker

다양한 환경에서 Docker를 작성한 정보를 공유해 드립니다.

해당 자료는 Docker 기본 페이지에서 제공한 문서를 기준으로 테스트 한 결과를 작성한 것입니다.


1. CentOS

1.1. Kernel support

  • kernel version 2.6.32-431 이거나 이상인 버전에서 Docker가 실행 됨

1.2. Installing Docker - CentOS-7

1.3. FirewallD

  • Overview
    • iptables을 감싸고 있는 firewalld와 충돌할 수 있음
    • firewalld가 시작되거나 재시작 되는 경우 iptable의 Docker 제약을 정보가 제거되고 Docker의 동작을 막음
    • systemd 를 사용하는 경우 Docker 실행 전에 firewalld가 시작됨
  • 결론
    • docker 다음에 firewalld를 시작하거나 재시작 하는 경우 docker daemon을 재시작 해야 함
      • 기본 설치 시에는 docker 재시작 필요 없음
      • firewalld 재시작 시에만 docker 재시작 필요

1.4. Installing Docker - CentOS-6.5 Over

$ sudo yum install http://ftp.riken.jp/Linux/fedora/epel/6/i386/epel-release-6-8.noarch.rpm
  • docker pacakge 삭제
    • CentOS-6에서 패키지 명 혼돈으로 인해 문제가 발생하므로 docker 패키지 선 삭제
$ sudo yum -y remove docker
  • install docker-io package
$ sudo yum install docker-io

1.5. Manual installation of latest Docker release

1.6. Starting the Docker daemon

  • Docker가 설치된 후 docker daemon 시작
$ sudo service docker start
  • 부팅 시 자동으로 시작 되도록 설정
$ sudo chkconfig docker on

1.7. Verify that Docker is working

  • 최신 CentOS image 받기
$ sudo docker pull centos
  • docker image 확인
$ sudo docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
docker.io/centos    latest              fd44297e2ddb        7 weeks ago         215.7 MB
  • test image bash shell 실행
$ sudo docker run -i -t centos /bin/bash
[root@256d47bc005b /]#

1.8. Custom daemon options

  • Overview
    • Docker daemon 수정 할 경우
      • HTTP Proxy 추가 필요한 경우
      • Docker 동작 파일을 위한 디렉토리와 파티션 설정
  • Controlling and configuring Docker using Systemd

1.9. Dockerfiles

1.10. Issues?


2. Ubuntu

  • Overview
    • 지원 가능한 Ubuntu Version
      • Ubuntu Trusty 14.04 (LTS)
      • Ubuntu Precise 12.04 (LTS)
      • Ubuntu Saucy 13.10
    • Ubuntu package 관리 사용한

2.1. Prerequisites

  • Oveview
    • 64bit 운영 체제 필요
    • kernel 3.10 이상 버전
  • Check kernel version
root@ubuntu:~# uname -r
3.13.0-24-generic

2.2. For Trusty 14.04

  • 현재 이 버전을 위한 준비 사항은 없음

2.3. For Precise 12.04 (LTS)

  • Overview
    • 3.13 kernel version 이 요구됨
    • 추가 패키지 설치가 필요
  • Update your package manager.
    • $ sudo apt-get update
  • Install both the required and optional packages.
    • $ sudo apt-get install linux-image-generic-lts-trusty
  • Reboot your host.
    • $ sudo reboot

2.4. For Saucy 13.10 (64 bit)

  • Overview
    • Docker는 기본 백앤드 스토리지로 AUFS를 사용
      • 만약에 설치가 안되어 있으면 설치 필요

2.5. Installing Docker on Ubuntu

  • Overview
    • Ubuntu Version 별 전제조건 사항을 수행 후 설치
  • Installing
    • sudo 권한을 가진 사용자로 login
  • wget 설치
    • wget 확인 후 없는 경우 설치
$ which wget

$ sudo apt-get update
$ sudo apt-get install wget
  • 최신 Docker package 가져오기
$ wget -qO- https://get.docker.com/ | sh
  • Docker 설치 확인
    • test 이미지 다운로드 후 실행 테스트
      • $ sudo docker run hello-world
      • 위 실행이 안 될 경우
        • $ docker run -it ubuntu bash

2.6. Optional Configurations for Docker on Ubuntu

2.6.1. Create a docker group

  • Overview
    • docker 데몬은 TCP port 대신 Unix socket을 bind 하여 사용
    • Unix socket의 권한은 root에 있으므로 다른 사용자가 실행해야 할 경우 sudo 를 같이 사용
    • dockker 명령어 사용 시 sudo 명령어 사용을 피하기 위해 docker group을 생성하여 사용
  • To create the docker group and add your user
    • sudo 권한을 가진 사용자 login
      • 여기서는 ubuntu 사용자를 예로 설명
    • docker group을 추가하고 사용자에 group 정보 추가
$ sudo usermod -aG docker ubuntu
    • log out 후 해당 권한을 가진 사용자로 login
    • docker를 sudo 없이 실행 하여 확인
ubuntu@ubuntu:~$ docker run hello-world

ubuntu@ubuntu:~$ docker run -it ubuntu bash
root@b6e39aa40958:/# exit
exit
ubuntu@ubuntu:~$

2.6.2. Adjust memory and swap accounting

  • Docker 실행 중 아래와 같은 메시지가 보일 경우 실행
WARNING: Your kernel does not support cgroup swap limit. WARNING: Your kernel does not support swap limit capabilities. Limitation discarded.
  • 시스템의 memory와 swap 영역을 활성화
    • sudo 권한을 가진 사용자로 login
    • /etc/default/grub 파일 수정
      • GRUB_CMDLINE_LINUX 정보 설정
GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"
      • 파일 저장 후 닫기파일 저장 후 닫기
    • GRUB update
$ sudo update-grub

2.6.3. Enable UFW forwarding

  • Overview
  • To configure UFW and allow incoming connections on the Docker port
    • sudo 권한을 가진 사용자로 login
    • UFW가 설치되어 있고 사용가능 한지 확인
      • $ sudo ufw status
    • /etc/default/ufw 파일 수정
      • DEFAULT_FORWARD_POLICY 정책 설정
DEFAULT_FORWARD_POLICY="ACCEPT"
      • 파일 저장 후 닫기
    • UFW 설정 reload
      • $ sudo ufw reload
    • Docker port 접속 허용
      • $ sudo ufw allow 2375/tcp

2.6.4. Configure a DNS server for use by Docker

2.6.4.1. DNS 설정

  • desktop 장비에서 container 실행 시 경고 발생
    • local DNS nameserver를 사용할 수 없어서 나오는 경고
WARNING: Local (127.0.0.1) DNS resolver found in resolv.conf and containers
can't use it. Using default external servers : [8.8.8.8 8.8.4.4]
  • To specify a DNS server for use by Docker
    • sudo 권한을 가진 사용자로 login
    • /etc/default/docker 파일 수정
      • $ sudo nano /etc/default/docker
      • Docker 설정 추가
DOCKER_OPTS="--dns 8.8.8.8"
      • DNS 두 개 이상 설정하는 경우
--dns 8.8.8.8 --dns 192.168.1.1
      • 파일 저장 후 닫기
    • Restart the Docker daemon
$ sudo restart docker

2.6.4.2. Disable dnsmasq in NetworkManager

  • Overview
    • dnsmasq를 사용하는 경우 /etc/hosts를 사용하여 dns를 중앙에서 관리가 가능
    • dnsmasq를 사용하는 경우 네트워크 지연이 발생할 가능성이 있음
    • dnsmasq 참조 정보
      • http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/System_management/Dnsmasq
    • dnsmasq를 disable 하는 설정
  • Disable dnsmasq in NetworkManager
    • /etc/default/docker 파일 수정
      • 해당 정보 주석 처리
dns=dnsmasq
      • 파일 저장 후 닫기
    • NetworkManager와 Docker 재시작
$ sudo restart network-manager
$ sudo restart docker

2.7. Upgrade Docker

  • Overview
    • Docker를 최신 버전으로 upgrade 하고자 할 때
      • wget 에서 -N 플래그 값 사용
  • Upgrade
    • $ wget -N https://get.docker.com/ | sh




X. 참조 사항

X.1. Liked




Google Drive File

https://docs.google.com/document/d/1ohu-GAiK--yUoX-g45S4xwb5XHLUpdkuk1dg0Zs8Y30/edit?usp=sharing

댓글

이 블로그의 인기 게시물

How To Restart Windows Server 2012

Blog 오픈