내 docker-compose.yml
파일에는 다음이 있습니다. 그러나 컨테이너는 호스트 이름 값을 선택하지 않습니다. 어떤 아이디어?
dns:
image: phensley/docker-dns
hostname: affy
domainname: affy.com
volumes:
- /var/run/docker.sock:/docker.sock
컨테이너에서 호스트 이름을 확인할 때 선택하지 않습니다 affy
.
답변
현재 고정 표시기-작성 버전 3 , 당신은 단지 사용할 수있는 hostname
필드 :
version: '3'
services:
dns:
hostname: 'your-name'
답변
이것은 올바르게 작동하는 것 같습니다. 구성을 파일에 넣으면 :
$ 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
답변
을 사용할 때 호스트 이름이 다른 컨테이너에 표시되지 않는 것을 발견했습니다 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
정의 된 별칭을 사용할 수 있도록 하려면 을 사용해야 합니다.
답변
Docker 문서 기반 :
https://docs.docker.com/compose/compose-file/#/command
hostname: <string>
도커 작성 파일을 간단히 넣습니다
.
예 :
[...]
lb01:
hostname: at-lb01
image: at-client-base:v1
[...]
컨테이너 lb01이 at-lb01
호스트 이름으로 선택됩니다 .
답변
내가 찾은 가장 간단한 방법 docker-compose.yml
은 container_name 문서 참조 에서 컨테이너 이름을 설정하는 것 입니다. docker-compose v1 +에 적용됩니다. 호스트 머신에서 컨테이너로가 아니라 컨테이너에서 컨테이너로 작동합니다.
services:
dns:
image: phensley/docker-dns
container_name: affy
이제 affy
컨테이너 이름을 사용하여 다른 컨테이너에서 액세스 할 수 있습니다 . 개발 환경에서 여러 redis 서버에 대해이 작업을 수행해야했습니다.
참고 솔루션은 확장 할 필요가없는 한 작동합니다. 일관된 개별 개발자 환경과 같은.
답변
나는 작동하는 kdc를 갖기 위해 freeipa 컨테이너 를 회전 시켜야 했고 그렇지 않으면 실행되지 않을 호스트 이름을 제공해야했습니다. 결국 나를 위해 일한 HOSTNAME
것은 compose 에서 env 변수를 설정하는 것입니다 .
version: 2
services:
freeipa:
environment:
- HOSTNAME=ipa.example.test
이제 작동합니다.
docker exec -it freeipa_freeipa_1 hostname
ipa.example.test