컨테이너를 시작해도 --uts=private
여전히 호스트 이름을 변경할 수 없습니다. 하지만 이것이 바로 그 목적인 것 같나요?
--uts=private
효과 는 무엇입니까 ?
$ podman run -ti --uts=private alpine
/ # hostname foo.bar.baz
hostname: sethostname: Operation not permitted
CentOS에서는 오류가 약간 다릅니다.
$ podman run -ti --uts=private centos:7
[root@e5fd4d09f5c3 /]# hostname foo.bar.baz
hostname: you must be root to change the host name
내 컨테이너에 새 프라이빗 네임스페이스가 있는 경우 호스트 이름을 변경할 수 없는 이유는 무엇입니까?
답변1
네임스페이스 기능을 기준으로 귀하를 차단하고 있습니다. 기본적으로 컨테이너는 CAP_SYS_ADMIN을 가져오지 않습니다.
$ podman run -ti --uts=private --hostname foobar centos
# hostname
foobar
$ podman run -ti --cap-add SYS_ADMIN --uts=private centos
[root@a4f36e700ad7 /]# hostname foobar
[root@a4f36e700ad7 /]# hostname
foobar
[root@a4f36e700ad7 /]# exit
답변2
irc.freenode.net/#podman에서,
<nalind> EvanCarroll:
--cap-add sys_admin
기본 seccomp 필터(from ) 는 시스템 호출을/usr/share/containers/seccomp.json
허용하지 않으며 커널은 다음을 사용하여 컨테이너를 실행하지 않는 한 호출을 허용하지 않습니다.sethostname
더 알고 싶지만 이제 시작입니다. 그래서 이것을 커뮤니티 위키로 표시하고 실제 답변이 있으면 삭제하겠습니다.
지금 바로,
- 호스트 이름을 설정할 수 없는 경우 개인 uts 네임스페이스의 목적은 무엇입니까?
- 호스트 이름 설정 기능이 잠겨 있는 이유는 무엇입니까
cap_sys_admin
?