source

도커 합성에서 호스트 이름을 설정하려면 어떻게 해야 합니까?

ittop 2023. 8. 15. 11:45
반응형

도커 합성에서 호스트 이름을 설정하려면 어떻게 해야 합니까?

내 안에서docker-compose.yml파일, 나는 다음을 가지고 있습니다.그러나 컨테이너는 호스트 이름 값을 선택하지 않습니다.아이디어 있어요?

dns:
  image: phensley/docker-dns
  hostname: affy
  domainname: affy.com
  volumes:
    - /var/run/docker.sock:/docker.sock

컨테이너에서 호스트 이름을 확인해도 수신되지 않습니다.affy.

Docker Composite 파일 버전 3.0 이상에서는 다음을 사용할 수 있습니다.hostname키:

version: "3.0"
services:
  yourservicename:
    hostname: your-name

사용할 때 호스트 이름이 다른 컨테이너에 표시되지 않는 것을 발견했습니다.docker run이는 알려진 문제(아마도 더 알려진 기능)로 밝혀졌으며, 논의의 일부는 다음과 같습니다.

호스트 이름 사용에 대한 경고를 문서에 추가해야 합니다.저는 그것이 거의 유용하지 않다고 생각합니다.

컨테이너 네트워킹 측면에서 호스트 이름을 할당하는 올바른 방법은 다음과 같이 별칭을 정의하는 것입니다.

services:
  some-service:
    networks:
      some-network:
        aliases:
          - alias1
          - alias2

불행하게도 이것은 여전히 작동하지 않습니다.docker run이 문제를 해결하려면 컨테이너에 다음과 같은 이름을 할당해야 합니다.

docker-compose run --name alias1 some-service

그리고.alias1그런 다음 다른 컨테이너에서 ping할 수 있습니다.

업데이트: @grilix가 지적했듯이, 당신은 다음을 사용해야 합니다.docker-compose run --use-aliases정의된 별칭을 사용할 수 있도록 설정합니다.

이것은 올바르게 작동하는 것 같습니다.구성을 파일에 넣으면 다음과 같이 됩니다.

$ cat > compose.yml <<EOF
dns:
  image: phensley/docker-dns
  hostname: affy
  domainname: affy.com
  volumes:
    - /var/run/docker.sock:/docker.sock
EOF

그런 다음 일을 제기합니다.

$ docker-compose -f compose.yml up
Creating tmp_dns_1...
Attaching to tmp_dns_1
dns_1 | 2015-04-28T17:47:45.423387 [dockerdns] table.add tmp_dns_1.docker -> 172.17.0.5

그런 다음 컨테이너 내부의 호스트 이름을 확인합니다. 모든 것이 정상인 것 같습니다.

$ docker exec -it stack_dns_1 hostname
affy.affy.com

도커 설명서 기반: https://docs.docker.com/compose/compose-file/ #/command

간단히 말하면hostname: <string>제 도커 파일에 있습니다.

예:

[...]

lb01:
  hostname: at-lb01
  image: at-client-base:v1

[...]

그리고 컨테이너 lb01 픽업at-lb01호스트 이름으로

내가 찾은 가장 간단한 방법은 컨테이너 이름을 설정하는 것입니다.docker-compose.ymlcontainer_name 설명서를 참조하십시오.도커 구성 v1+에 적용할 수 있습니다.호스트 시스템에서 컨테이너로 작동하는 것이 아니라 컨테이너에서 컨테이너로 작동합니다.

services:
  dns:
    image: phensley/docker-dns
    container_name: affy

이제 액세스할 수 있습니다.affy다른 컨테이너에서 컨테이너 이름을 사용합니다.개발 환경에서 여러 대의 redisaster 서버에 대해 이 작업을 수행해야 했습니다.

참고 솔루션은 확장할 필요가 없는 한 작동합니다.일관된 개별 개발자 환경 등.

작동하는 kdc를 가지려면 freipa 컨테이너를 회전시켜야 했고 그렇지 않으면 실행되지 않는 호스트 이름을 지정해야 했습니다.결국 제게 효과가 있었던 것은HOSTNAME구성 시 env 변수:

version: 2
services:
  freeipa:
    environment:
      - HOSTNAME=ipa.example.test

이제 작동합니다.

docker exec -it freeipa_freeipa_1 hostname
ipa.example.test

언급URL : https://stackoverflow.com/questions/29924843/how-do-i-set-hostname-in-docker-compose

반응형