
コンテナを起動しても--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
もっと知りたいのですが、今は始まりです。だから、これをコミュニティwikiとしてマークし、実際の答えがあれば削除します。
今すぐ、
- ホスト名を設定できない場合、プライベートuts名前空間の目的は何ですか?
- ホスト名設定機能がロックされているのはなぜですか
cap_sys_admin
?