출처
네트워크란 무엇일까요? 우리가 이용하고 있는 인터넷 환경도 네트워크가 구축되어 있기 때문에 사용이 가능하죠. 네트워크는 복수의 디바이스가 연결되어 있는 것입니다. 연결된 디바이스 간에 데이터를 주고받는 규칙을 프로토콜(Protocol) 이라고 하는데, 우리가 이미 익숙하게 알고 있는 http(80)
, https(443)
등이 바로 그것입니다. 본격적으로 도커 네트워크를 다루기에 앞서 네트워크와 관련된 배경지식을 짚어보도록 하겠습니다.
ifconfig # Linux/macOS
ipconfig # Windows
위의 명령어를 OS에 맞게 입력해보도록 하겠습니다. 하단의 이미지는 Ubuntu:18.04
에서 실행한 결과입니다.
뭔가 복잡한 문구들이 창을 가득 채우고 있습니다. 중요한 부분 위주로 살펴보겠습니다.
1) ens33
디바이스의 NIC(Network Interface Controller)를 나타내고 있는 부분입니다. NIC는 일반적으로 LAN 카드 라는 표현이 더 익숙한데, 호스트와 네트워크 통신망 사이에서 데이터 송수신 역할을 수행합니다.
일반적인 PC에는 물리적인 NIC가 내장되어 있습니다. 사양 페이지에 등장하는 Ethernet 관련 포트가 바로 유선으로 외부 통신망과 호스트 디바이스를 연결해주는 매개체입니다.
구버전 리눅스에서는 eth0
, eth1
이었으나 지금의 형태로 변경되었습니다.
2) lo
lo
는 Loopback network interface 에서 비롯된 용어로 localhost
를 의미합니다. 디바이스의 관점에서 자기 자신을 가리키는 것이죠. 웹서버를 구동한 PC에서 실제 브라우저를 통해 접속하여 테스트 해볼 수 있는 것이 바로 Loopback 네트워크 덕분입니다. 하나의 디바이스가 클라이언트와 서버의 역할을 겸하는 것이죠.
OS 내부적으로 호스트의 이름을 IP와 매핑하여 가지고 있는 파일이 있는데, Ubuntu의 경우에는 /etc/
경로에 hosts
라는 파일로 세팅되어 있습니다. 127.0.0.1
이나 localhost
로 접속해도 모두 동일한 결과를 볼 수 있는 것은 바로 이 설정 때문입니다.
3) inet
inet6
inet
은 IPv4를 의미하며, 우리에게 익숙한 12 자리 숫자체계입니다. 32비트로 구성되어 있으며, 10진수를 4부분으로 분할하여 표기합니다.
inet6
은 IPv6를 의미하며, 32비트의 IPv4가 고갈될 것에 대비한 128비트 체계의 IP주소입니다. 16진수를 8부분으로 분할하여 표기합니다. 0
값을 가지는 경우 생략이 가능하기 때문에 실제로 조회되는 주소값은 8부분보다 적은 경우가 있습니다.
실제로 모든 디바이스가 공인 IP(Public IP)를 사용하는 것은 아닙니다. 대신 라우터에 의해 설정된 대역에서 사설 IP(Private IP)를 사용하죠. 이에 따라 하나의 공인 IP를 가지고 여러 디바이스 들이 통신망에 접근할 수 있게 되었습니다. 라우터로 묶인 네트워크 통신망을 LAN(Local Area Network) 이라고 하며 여러 LAN 들이 모여 커다란 WAN(Wide Area Network)을 구성합니다.