docker-compose의 외부 링크는 어떻게 작동하나요?

docker-compose의 외부 링크는 어떻게 작동하나요?

docker compose에는 옵션이 있지만 external_links어떻게 작동합니까?

/etc/hosts에 쓰기 만 link하지만 external_links그렇지 않습니다.

부두에서는 이에 대해 아무도 언급하지 않으므로 이 옵션이 어떻게 작동하는지 설명해주세요.

답변1

다음과 같이 docker-compose.yml을 생성하면:

version: '2'

services:
  sleep-one-hour:
    image: alpine
    command: sleep 3600
    external_links:
      - google.com:216.58.222.110

그리고 기본 네트워크 구성을 지정하지 마십시오. docker-compose는 실제로 명령을 실행하는 폴더 이름으로 사용자 정의 기본 네트워크를 생성합니다 docker-compose up.

[myserver:external-links-test] docker-compose up
Creating network "externallinkstest_default" with the default driver
Creating externallinkstest_sleep-one-hour_1
Attaching to externallinkstest_sleep-one-hour_1

그런 다음 컨테이너가 생성되어 이 사용자 지정 네트워크에 연결되고, 컨테이너가 네트워크에 연결될 때 외부 링크가 설정됩니다. 최근 생성된 컨테이너를 검사하여 직접 확인할 수 있습니다.

[myserver:~] docker inspect 1056bb135bc0
[
    {
        "Id": "1056bb135bc0200dcfff1fa25affd561042e0515641adf435e4b63a16903f93d",
        "Created": "2017-01-26T14:31:57.928385177Z",
        ... other info ...
        "NetworkSettings": {
            ... other info ...
            "Networks": {
                "externallinkstest_default": {
                    "IPAMConfig": null,
                    "Links": [
                        "google.com:216.58.222.110"
                    ],
                    "Aliases": [
                        "1056bb135bc0",
                        "sleep-one-hour"
                    ],
                    "NetworkID": "343121714be4750eebf12997fa73c3aaba0f2cf5faace633ab1ca683a2959632",
                    "EndpointID": "74f1a975236a8ab0f60379408faa04022f1b9e398c7b8a541158c4ca889aff98",
                    "Gateway": "172.20.0.1",
                    "IPAddress": "172.20.0.2",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:14:00:02"
                }
            }
        }
    }
]

실제로 는 docker-compose up순수 docker 명령에서 다음과 같이 변환됩니다.

[myserver:external-links-test] docker network create --attachable --subnet 61.0.0.0/24 externallinkstest_default
13f1b9caad1b997245be0fe48922ff04568c7bcf1e3bdd8846d87f53934ca390
[myserver:external-links-test] docker run -d --name externallinkstest_sleep-one-hour_1 alpine sleep 3600
17b642eb4a3cb562783ae76192589d55cb9174cd2c8a705464f62108ff11372c
[myserver:external-links-test] docker network connect --link google.com:216.58.222.110 externallinkstest_default externallinkstest_sleep-one-hour_1

관련 정보