메뉴 건너뛰기

XEDITION

Server

실행중인 컨테이너의 hostname 변경..?

proin 2021.02.25 16:48 조회 수 : 3

https://mns010.tistory.com/m/28


아래의 링크를 참조

https://forums.docker.com/t/change-hostname-of-an-existing-container/361/15

 

I found a very simple way of achieving this. Install kitematic. This tools allows you to change the hostname - it will restart - after restarting it will be the newly applied hostname.

 

컨테이너의 hostname을 변경시키는 가장 간단한 방법으로는 컨테이너를 다시 만드는 것입니다. 컨테이너를 실행시킬 때에 “--hostname {hostname}”옵션을 넣어주면 됩니다. 하지만 컨테이너를 다시 만들지 않고 컨테이너의 hostname을 바꾸려고 한다면 어떻게 해야될까요...?

 

사전지식

보통 linux에서 hostname을 바꾸는 방법은 여러 방법이 있습니다.

https://www.thegeekdiary.com/centos-rhel-7-how-to-change-set-hostname/

 

하지만 컨테이너의 설정은 보통 컨테이너를 만들 때 하기 때문에, 컨테이너가 만들어진 후, 설정을 다시 하려는 행동은 보통 하지 않습니다... 그래도 도커 포럼을 보다가 컨테이너를 실행하고 있는 상태에서 hostname을 변경하는 방법을 찾아서 기록해 둡니다.


먼저 테스트용 컨테이너를 hostname을 지정하지 않고 만듭니다.

[root@centos77 ~]# docker run -it -d --rm --name hostTest ubuntu

182ab203cadf368270914dacf933ee81145e0a9eba5426e653f5b88abd446d3b

[root@centos77 ~]# docker ps -a

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

182ab203cadf ubuntu "/bin/bash" 17 seconds ago Up 17 seconds hostTest

[root@centos77 ~]# docker exec hostTest hostname

182ab203cadf

[root@centos77 ~]# 

 

hostname이 컨테이너의 id인 것을 확인할 수 있습니다.

 


실행중인 컨테이너의 pid를 확인합니다.

[root@centos77 ~]# docker inspect -f '{{ .State.Pid }}' hostTest 

7077

[root@centos77 ~]# 

 


nsenter명령어를 이용하여 컨테이너에 접근하고, “hostname” 명령어로 컨테이너의 hostname을 변경합니다.

[root@centos77 ~]# nsenter --target 7077 --uts

[root@182ab203cadf ~]# hostname "changedHostName"

[root@182ab203cadf ~]# exit

logout

[root@centos77 ~]# docker exec hostTest hostname

changedHostName

[root@centos77 ~]# docker ps -a

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

182ab203cadf ubuntu "/bin/bash" 2 minutes ago Up 2 minutes hostTest

[root@centos77 ~]#

 

컨테이너의 hostname이 변경된 것을 확인할 수 있습니다.

 

 

위와 같이 단순히 컨테이너에 접근하여 “hostname”명령어를 이용할 것이면 docker exec 명령어를 이용하여도 되지 않느냐 하시는 분들도 있을 것입니다. 물론 가능합니다. 컨테이너가 “--privileged” 옵션이 추가된 상태에서 만들어졌을 경우에는 말이지요 하지만 컨테이너가 privileged 권한이 없을 경우에는 아래와 같은 에러가 발생합니다.

 

root@901c9b9db40f:/# hostname ChangedHostName

hostname: you must be root to change the host name

root@901c9b9db40f:/#

 

그러므로 nsenter명령어를 이용하는 것이 가장 좋은 방법이라고 생각이 듭니다.

 

nsenter에 관한 자료는 아래와 같은 것들이 있습니다.

http://man7.org/linux/man-pages/man1/nsenter.1.html

https://github.com/jpetazzo/nsenter

https://access.redhat.com/solutions/1611883

 

 


 

 

 

 

 

번호 제목 글쓴이 날짜 조회 수
30 Proxy로 Gitlab Container의 웹IDE에서 브런치를 못 불러오는 문제 해결 방법 proin 2022.04.28 2
29 Docker를 사용하여 사용자를 위해 웹 사이트를 분리 할 수 ​​있습니까? 수있는 자체 웹 사이트가있는 서버 (예 : proin 2022.02.24 1
28 docker 가 우분투 ufw 같이 사용시 방화벽룰 무시하는 문제 해결하기 proin 2021.08.19 1
27 Ubuntu KERNEL Upgrade, Downgrade, Remove , Hold 18.04 proin 2021.06.07 2
26 GNU Tar를 이용한 증분 백업과 복원의 개념 이해 proin 2021.05.13 3
25 [UNIX / Linux] 특수 권한(setuid, setgid, sticky bit) file proin 2021.04.27 1
24 Apache2 웹서버에 https 적용하기 (Let's Encrypt SSL Certificate) file proin 2021.04.19 9
23 [LINUX] 기본 명령어로 메인보드, 씨피유, 메모리, 디스크, 네트워크 모델명 및 정보 확인하기 proin 2021.04.16 1
22 [Ubuntu] 우분투 방화벽(UFW) 설정 proin 2021.03.25 3
» 실행중인 컨테이너의 hostname 변경..? proin 2021.02.25 3
20 ubuntu APM 자동 설치하기(php 5.6, php 7.0) proin 2021.01.14 9
19 How To View CPU Temperature On Linux proin 2020.11.10 1
18 CPU/MEM STRESS TEST IN UBUNTU 18.04 proin 2020.11.10 2
17 UBUNTU에서 GPU 모니터링 더 멋지게 하기 proin 2020.11.10 5
16 UBUNTU에서 GPU 모니터링 하는 4가지 방법 proin 2020.11.10 3
15 리눅스 stress 툴을 통해 CPU, Memory 스트레스 부하 주는 방법 proin 2020.11.10 1
14 메모리,하드,cpu 스트레스 테스트 proin 2020.11.10 2
13 Ubuntu SVN 추천 :: RabbitVCS 설치하기 proin 2020.09.11 1
12 [기본.1] Linux 서버에 SVN 구축(설치)하기 proin 2020.09.11 2
11 sudo 설정하기 proin 2020.09.09 1
위로