Install Docker
Install Docker
다양한 환경에서 Docker를 작성한 정보를 공유해 드립니다.
해당 자료는 Docker 기본 페이지에서 제공한 문서를 기준으로 테스트 한 결과를 작성한 것입니다.
Google Drive File
https://docs.google.com/document/d/1ohu-GAiK--yUoX-g45S4xwb5XHLUpdkuk1dg0Zs8Y30/edit?usp=sharing
다양한 환경에서 Docker를 작성한 정보를 공유해 드립니다.
해당 자료는 Docker 기본 페이지에서 제공한 문서를 기준으로 테스트 한 결과를 작성한 것입니다.
1. CentOS
- Docker가 지원되는 CentOS Version
- CentOS 6.5 (64-bit) or later
- Docker는 오직 64 bit 아키텍쳐에서 실행이 가능
1.1. Kernel support
- kernel version 2.6.32-431 이거나 이상인 버전에서 Docker가 실행 됨
1.2. Installing Docker - CentOS-7
- Docker는 CentOS-Extra repository에 기본적으로 포함되어 있음
- Install
- $ sudo yum install docker
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
- Overview
- EPEL repository enable 및 확인
$ 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
- Overview
- Package 설치 사용을 권장
- 최신 버전의 Package 구성이 필요한 경우 binary 설치 권장
- Binaries install
- unit file 복사
- the GitHub repository 에서 /etc/systemd/system 폴더에 복사하여 넣어 두기
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
- Overview
- CentOS Project 에서 수많은 sample Dockerfile을 제공
- github
1.10. Issues?
- 이슈 사항은 bug tracker 참조
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
- UFW (Uncomplicated Firewall) 를 사용 중일 경우 추가 설정이 필요
- 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
- Installing Docker - CentOS-6.5
Google Drive File
https://docs.google.com/document/d/1ohu-GAiK--yUoX-g45S4xwb5XHLUpdkuk1dg0Zs8Y30/edit?usp=sharing
댓글
댓글 쓰기