diff --git a/README.md b/README.md index fab9a93..007ba34 100644 --- a/README.md +++ b/README.md @@ -116,6 +116,8 @@ LinkLocalAddressing=no `octopus-outside`는 해당 컨테이너이름을 기반으로 설정되어있는 DNS서버의 A레코드를 컨테이너의 IP로 인식한다. 또한 서브넷, 게이트웨이는 현재 호스트의 기본서브넷, 기본게이트웨이를 인식하여 컨테이너내부(PID1의 environment variable로 지정)로 전달하며 이 정보를 토대로 `octopus-inside`가 실행시 네트워크 구성을 수행한다. +이 설정을 바탕으로 `systemd-nspawn`을 `execve(2)`콜을 수행하며 `octopus-outside`자신은 시스템에서 사라진다. + * 주의 DNS서버는 설정하지 않으므로 미리 `/etc/resolv.conf`를 설정해놓아야한다(TODO?) @@ -144,6 +146,16 @@ Args: `bindInterface`: ipvlan으로 연결할 nic이름을 지정한다. +## `octopus-inside` 설정 + +`octopus-inside`는 컨테이너 내부에서 `PID 1`프로세스의 environment variable을 인식하고 다음 3가지 작업을 하고 사라집니다. + +1. `ipvlan`인터페이스를 찾아 `eth0`으로 리네임 +2. 건내받은 정보를 토대로 IP주소, 서브넷주소, 게이트웨이주소를 eth0에 설정 +3. eth0을 UP상태로 지정 + +이후 해당컨테이너는 외부와 통신이 가능하게됩니다. + ## 참고 [octopus-inside systemd서비스 파일](services/octopus-inside.service) @@ -152,3 +164,4 @@ Args: ## Licensing 별다른 언급이 없는 한 이 프로그램은 [GNU GENERAL PUBLIC LICENSE Version 3](LICENSE)로 배포됩니다. +