티스토리 뷰



Ubuntu 에서 Docker 를 사용하기 위한 기초적인 옵션을 설정하기 위한 정보 들입니다.

참고 원문서 : Installation on Ubuntu 


1. Docker 그룹 생성


  docker 의 데몬은 TCP port 대신 Unix socket 과 바인드 되어 있습니다. 때문에 기본 유저로 root 로 설정이 되어 있어서 sudo 를 이용해 주어야 하는대요. docker 그룹을 생성하여 docker 명령을 이용하는대 sudo 를 사용하지 않도록 하는 것이 목표 입니다.


 방법은 간단합니다. docker 그룹을 생성 후 docker 에 사용자 계정을 추가하면 됩니다. docker 데몬이 실행될때 Unix socket 의 읽기/쓰기의 권한을 docker 그룹이 가지고 있기 때문에 가능합니다.


 주의 : docker 그룹은 docker 관해서는 root 같은 권한을 가지게 됩니다. 따라서 당연히 보안 문제가 발생할 수 있는데요. Docker Daemon Attack Surface 를 참고 하시기 바랍니다. (  후에 기회가 된다면 번역 하겠지만... )


1-1 docker 그룹에 사용자 계정 넣기


  아래의 명령어로 docker 그룹에 사용자 계정을 넣어 주시기 바랍니다.


$ sudo usermod -aG docker 사용자 계정 


1-2 로그아웃 후 로그인하기


  사용자 계정의 권한을 재대로 적용하기 위해서 로그아웃 후 로그인 을 진행하여 주시기 바랍니다.


1-3 적용 확인하기


  이제 재대로 적용 되었는지 확인해볼 시간입니다. hello-world 로 확인해보시기 바랍니다.


$ docker run hello-world






2. memory 및 swap 조정하기


WARNING: Your kernel does not support cgroup swap limit. WARNING: Your
kernel does not support swap limit capabilities. Limitation discarded.


사용자에 따라서는 docker 명령어 사용시 위의 경고 를 확인하실수 있는대요. 위의 메세지를 예방하기 위해서는 메모리와 스왑 계산을 시스템에서 할수있도록 활성화 해주셔야 합니다. 활성화를 위해서는 GNU GRUB 를 이용합니다.


$ sudo vim /etc/default/grub

위의 파일내에서 GRUB_CMDLINE_LINUX 의 값을 아래와 같이 수정해 주시기 바랍니다.


GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"


그리고 파일을 저장하고 닫으신 후


GRUB 를 업데이트 하시고 시스템을 재시작해주시기 바랍니다.


$ sudo update-grub
$ reboot


3. UFW 방화벽 설정하기


  UFW는 ( Uncomplicated Firewall ) Ubuntu 에 기본적으로 설치되어 있는 방화벽으로 docker 사용을 위해서는 몇가지 설정을 해야 되는대요 첫번째로 ip forward 를 위해서 DEFAULT_FORWARD_POLICY 를 accept 로 만들어 주셔야 합니다. 


  또한 ufw 는 기본적으로 incoming ( 들어오는 트래픽 ) 에 대해서 모두 deny ( 거절 ) 정책을 가지고 있습니다. 따라서 네트워크 트래픽이 container 에 닿게 하기 위해서는 docker 기본포트인 2375에 대해서 incoming 을 allow ( 허용 ) 해주셔야 합니다.


3-1. ufw 상태 체크 및 ufw  DEFAULT_FORWARD_POLICY 변경하기


  우선 ufw status 로 ufw 의 상태를 확인해보시고 /etc/default/ufw 를 아래와 같이 수정해 주시면 됩니다.

$ ufw status
$ sudo vim /etc/default/ufw

 ufw 상태가 disable 로 되어있다면 $ ufw enable 를 통하여 활성화 할수 있습니다. 하지만 만약 ssh (21) 포트를 사용 중이 시라면 ufw 를 enable 로 하기전에 ssh 포트를 열고 enable 로 만들어 주시기 바랍니다. 설정은 아래의 글들을 참고하여 주시기 바랍니다.


튜토리얼북 ufw 관련 검색


위의 파일을 여셧다면 이제 DEFAULT_FORWARD_POLICY 를 ACCEPT 로 설정하여 주시기 바랍니다.


DEFAULT_FORWARD_POLICY="ACCEPT"


이제 파일을 저장한후 닫아 주시고 ufw 를 다시 로드 해주시기 바랍니다.


$ sudo ufw reload


3-2. ufw 에 tcp 포트 2375 허용 하기


$ sudo ufw allow 2375/tcp


4. Docker 를 위한 DNS 서버 설정하기


  Ubuntu 에서는 기본 네임서버로 127.0.0.1 을 가르키고 있습니다. 이 파일은 /etc/resolv.conf 인대요. NetworkManager 의 dnsmasq 또한 /etc/resolv.conf 의 nameserver 127.0.0.1 을 이용합니다.


  위와 같이 셋팅이 되신분들은 container 를 시작할때 아래와 같은 경고 창을 보실수 있으실 것 입니다.


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]


  이 경고는 docker 의 컨테이너가 내부의 DNS nameserver 를 사용하지 못해서 인대요. docker 는 기본적으로 외부의 nameserver 를 사용합니다.


  경고를 없애기 위해서는 docker 컨테이너에 DNS 서버를 지정해줄 필요가 있습니다.


우선은 /etc/default/docker 를 열어서 DOCKER_OPTS='dns 8.8.8.8' 과 같이 수정해줍니다.


$ sudo vim /etc/default/docker

DOCKER_OPTS="--dns 8.8.8.8"


또한 --dns 8.8.8.8 --dns 8.8.4.4 --dns 168.126.63.1 과 같이 다중으로 설정할 수 있으니 참고 하시기 바랍니다.


추가로 국내의 DNS와 해외의 DNS 주소들 입니다.


국내 DNS 


서비스 

DNS 서버 - 1 

DNS 서버 - 2 

 KT

168.126.63.1 

168.126.63.2 

LG 

164.124.101.2 

203.248.252.2 

SK 

219.250.36.130 

210.220.163.82 


해외 DNS


서비스 

DNS 서버 - 1 

DNS 서버 - 2 

 구글 DNS

8.8.8.8 

8.8.4.4 

코모도 DNS 

8.26.56.26 

8.20.247.20 

Open DNS 

208.67.222.222 

208.67.220.220 

시스코 DNS 

64.102.255.44 

128.107.241.185 


그리고 모두 설정하셨다면 docker 를 재시작 해주도록 합니다.


$ sudo restart docker


이상으로 docker 를 사용하기전에 ubuntu 에서 해야 하는 셋팅들에 대해 알아봤습니다. 즐거운 하루 되시기 바랍니다. ^^


 튜토리얼북의 docker 과 관련된 글




공유하기 링크
댓글