도커(Docker) : IPv6 기능 활성화 하기

반응형

 

도커(Docker) : IPv6 기능 활성화 하기

본 글에서는 도커(Docker) 컨테이너에서 IPv6 기능을 활성화 하는 방법을 소개한다.

 

IPv6 를 지원하지 않는 도커 컨테이너

도커 컨테이너를 실행하면, 기본적으로는 IPv6 기능이 활성화 되지 않는다.

 

다음 화면은 도커 컨테이너를 실행한 후 ifconfig 명령을 통해 네트워크 인터페이스의 상태를 확인해 본 화면이다. IPv6 기능이 지원될 경우, 각 네트워크 인터페이스의 MAC 주소를 기반으로 한 링크-로컬 IPv6 주소가 자동으로 할당되어야 하는데, 그렇지 않은 것을 확인할 수 있다.

root@ff6676c91fa4:/workspace# ifconfig
eth0      Link encap:Ethernet  HWaddr 02:42:ac:11:00:02
          inet addr:172.17.0.2  Bcast:172.17.255.255  Mask:255.255.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:9 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:766 (766.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:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

root@ff6676c91fa4:/workspace#

 

또한 네트워크 인터페이스에 IPv6 주소를 설정하려는 시도 역시 다음과 같이 실패한다.

root@096f1ad05a64:/workspace# ip -6 addr add 2001:0db8:0:f101::1/64 dev eth0
RTNETLINK answers: Permission denied
root@096f1ad05a64:/workspace# 

 

 

도커 컨테이너 IPv6 기능 활성화

Privileged 모드로 실행된 도커 컨테이너 상에서는 sysctl 명령을 이용하여 IPv6 기능을 활성화할 수 있다.

root@cf9e6dd74a58:/workspace# sysctl net.ipv6.conf.all.disable_ipv6=0
net.ipv6.conf.all.disable_ipv6 = 0
root@cf9e6dd74a58:/workspace#

도커 컨테이너를 Privileged 모드로 실행하는 방법은 아래 글에 설명되어 있다.

 

위 명령 입력 후 ifconfig을 통해 네트워크 인터페이스의 상태를 확인해 보면, 다음과 같이 링크-로컬 IPv6 주소가 할당된 것을 확인할 수 있다.

root@cf9e6dd74a58:/workspace# ifconfig
eth0      Link encap:Ethernet  HWaddr 02:42:ac:11:00:02
          inet addr:172.17.0.2  Bcast:172.17.255.255  Mask:255.255.0.0
          inet6 addr: fe80::42:acff:fe11:2/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:10 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:836 (836.0 B)  TX bytes:516 (516.0 B)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          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:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

 

또는 도커 컨테이너 실행 시에 "--sysctl net.ipv6.conf.all.disable_ipv6=0" 옵션을 추가함으로써, IPv6 기능을 활성화할 수도 있다.

docker run --sysctl net.ipv6.conf.all.disable_ipv6=0 [IMAGE NAME] [OTHER OPTIONS...]

 

이 경우 컨테이너를 Privileged 모드로 실행하지 않아도 IPv6 기능이 활성화된다.

하지만 컨테이너 실행 후에 IPv6 주소의 변경이 필요한 경우에는 Privileged 모드로 실행해야 한다.


파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음

 

댓글

Designed by JB FACTORY