호스트 Ubuntu 16.04.4 LTS를 사용하여 실행 중인 컨테이너의 이름 변경

호스트 Ubuntu 16.04.4 LTS를 사용하여 실행 중인 컨테이너의 이름 변경

내 호스트:

» lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.4 LTS
Release:    16.04
Codename:   xenial

내 도커:

» docker --version 
Docker version 17.05.0-ce, build 89658be

내가 시도한 것:

1) 컨테이너에 호스트 이름 설정: 컨테이너에 올바른 기능이 부족하여 실패합니다.

root@172:/# hostname something
hostname: you must be root to change the host name

2) /etc/hostname컨테이너에서 수동 편집: 컨테이너를 다시 시작한 후에는 효과가 없으며 다시 시작하지 않으면 아무 의미도 없습니다.

3) 컨테이너 구성을 수동으로 편집합니다. 작동하지 않습니다. 이유는 알 수 없습니다.

sudo vi /var/lib/docker/containers/834787a141d73b359814055b5fc0ba3e1cc52effeb6f916e2adece297d600772/config.v2.json

4) 설명된 대로 네임스페이스 도구를 사용하여 호스트에서 컨테이너의 호스트 이름을 변경합니다.여기Ubuntu 16.04.4 LTS: 네임스페이스 도구에 액세스할 수 없으므로 불가능합니다 .

다른 어떤 옵션이 있나요?

이론적 해석

GitLab은 리포지토리를 복제하기 위해 현재 호스트 이름을 GitLab 실행기에 전달하는 것 같습니다. 기본 네트워크에서는 이름으로는 컨테이너에 접근할 수 없고 IP 주소로만 접근할 수 있습니다. 즉, gitlab 컨테이너의 호스트 이름을 IP 주소로 설정해야 하지만 이미 실행 중인 경우에만 IP 주소를 갖게 됩니다. 따라서 유일한 해결책은 다음과 같습니다.

  1. 컨테이너 실행
  2. IP 주소를 알아보세요
  3. IP 주소로 호스트 이름을 덮어씁니다.
  4. 이제 gitlab과 gitlab runer가 서로 대화할 수 있습니다.

다른 (깨끗한) 옵션은 사용자 정의 네트워크에서 컨테이너(gitlab 및 gitlab-runner)를 시작하여 실제 호스트 이름으로 접근할 수 있도록 하는 것이지만 현재는 gitlab 러너가 시작한 컨테이너가 그렇지 않다는 문제가 있습니다. 사용자 정의 네트워크를 사용할 때 실행기가 생성한 필수 컨테이너 서비스에 도달할 수 있습니다.

답변1

귀하의 문제에 대한 답변이 잘못되었지만 귀하가 요구하는 답변은 다음과 같습니다.

다음과 같은 옵션을 사용하여 컨테이너를 생성할 때 호스트 이름을 설정할 수 있습니다.

docker run --hostname example.com image_name

왜 이것이 잘못된 대답입니까? 컨테이너를 명명된 애완동물이 아닌 소로 취급해야 하기 때문입니다. 컨테이너를 스웜 스택으로 실행하거나 docker compose를 사용하여 실행하는 경우 서비스 이름을 사용하도록 gitlab과 실행기를 조정하세요. 또는 를 사용하여 컨테이너를 시작하는 경우 docker run컨테이너 이름을 사용할 수 있지만 더 쉽게 업데이트할 수 있도록 가능한 한 빨리 서비스로 전환하는 것이 좋습니다.


위의 문제에 대한 더 나쁜 솔루션의 경우 컨테이너 내부에서 자체 호스트 이름을 변경할 수 있도록 컨테이너에 기능을 추가할 수 있습니다. 이는 보안 취약점을 야기하므로 보안이 중요한 환경에는 권장되지 않습니다.

docker run --cap-add SYS_ADMIN ...

답변2

쉽게 업데이트하려면 Docker 호스트 시스템에서 수행하세요. docker run 명령과 함께 이와 같은 옵션을 사용하십시오.

-v ./hosts:/etc/hosts -v ./hostname:/etc/hostname

컨테이너 내부로 들어가 파일을 업데이트하지 않고도 호스트 컴퓨터에서 파일을 업데이트할 수 있습니다.

관련 정보