실행중인 컨테이너의 호스트 이름을 지정하는 방법은 무엇입니까? 한 이미지에서 컨테이너를 시작했습니다. sudo docker run

실행중인 도커 컨테이너에서 호스트 이름을 설정하는 데 문제가 있습니다. 이미지가 시작된 호스트 이름을 지정하는 방법을 이해하는 데 문제 가 있습니다.

다운로드 한 이미지에서 컨테이너를 시작했습니다.

sudo docker run -p 8080:80 -p 2222:22 oskarhane/docker-wordpress-nginx-ss

그러나 나는 통해 호스트 이름을 지정하는 것을 잊었다 -h; 컨테이너가 실행 중이므로 호스트 이름을 어떻게 지정할 수 있습니까?



답변

편집 /etc/hostname은 컨테이너 내부에서 ssh 액세스가 필요한 것 중 하나입니다. 그렇지 않으면 -h옵션으로 컨테이너를 회전시킬 수 있습니다 .

호스트 및 도메인 이름을 설정하려면

$ docker run -h foo.bar.baz -i -t ubuntu bash
root@foo:/# hostname
foo
root@foo:/# hostname -d
bar.baz
root@foo:/# hostname -f
foo.bar.baz


답변

컨테이너 및 서비스 중지

sudo docker stop CONTAINER_NAME
sudo service docker stop

구성 파일 편집 (JSON) [먼저 백업해야합니다]

/var/lib/docker/containers/CONTAINER_ID/config.json

바꾸다

“호스트 이름”: “무엇”

“호스트 이름”: “NEW_HOSTNAME”

컨테이너 및 서비스 시작

sudo service docker start
sudo docker start CONTAINER_NAME

(선택적으로 도커를 연결할 수도 있습니다)

sudo docker attach CONTAINER_NAME

도커에 대한 세부 사항 (예 : CONTAINER_NAME, CONTAINER_ID)은 다음을 실행하여 얻을 수 있습니다.

sudo docker ps -a


답변

컨테이너를 다시 시작하는 것이 가장 쉬운 옵션이지만 / etc / hostname을 편집하여 그 위치로 이동할 수도 있습니다.


답변

사용하는 경우 도커 내 --net=host에서 -h또는 호스트 내에서 호스트 이름을 변경할 수 없습니다 .

참조 https://github.com/docker/docker/issues/5708를


답변

https://evolvingweb.ca/blog/changing-docker-hostnames-namespaces 는이를 수행하는 방법을 설명합니다. 기본 아이디어는 docker inspect컨테이너의 pid를 얻는 데 사용 하고를 통해 컨테이너의 uts 네임 스페이스를 입력하는 것 nsenter입니다. hostname해당 네임 스페이스 내에서 실행 하면 해당 네임 스페이스를 공유하는 도커 인스턴스의 호스트 이름이 변경됩니다.


답변

다른 사람들이 지적했듯이 config.v2.json파일 을 수정하여 컨테이너에 대해 변경할 수 있습니다 .

파일을 편집하기 전에 Docker 서비스가 중지되었는지 확인하십시오. 그렇지 않으면 덮어 쓰기됩니다. 단계는 반드시이 순서대로 수행해야합니다

  • 컨테이너를 중지
  • Docker 서비스 중지
  • /var/lib/docker/containers/CONTAINER_ID/config.v2.json–파일 수정

  • Docker 서비스를 시작하십시오

  • 컨테이너를 시작

이것은 Docker v17.05.0-ce에서을 사용하는 컨테이너에서 작동하는 것으로 확인되었습니다 --net=host. /etc/hostname파일 수정이 작동하지 않고 파일을 덮어 씁니다.


답변

에서

 /var/lib/docker/containers/CONTAINER/config.json

찾아서 설정

"Config":{"Hostname":"utils","Domainname":"mysite.com", ...}