げっとシステムログ

WEB開発メモ

CentOS 7 の docker 上の ubuntu で openssh-client をインストールできないのは SELinux のせいかもしれない

さくらの VPS で CentOS7 を入れて docker しているのだが、 ubuntu12.04 のイメージを使って openssh-client をインストールしようとしたところエラーになった

Errors were encountered while processing:
 openssh-client
E: Sub-process /usr/bin/dpkg returned an error code (1)

実際は openssh-client をインストールしようとしたわけではなく、前に作った Dockerfile を build したところエラーになったのだが

それはさておきこのエラーメッセージでは何が何だかわからないので ubuntu12.04 のイメージで直接 openssh-client をインストールしてみた

groupadd: failure while writing changes to /etc/group
addgroup: `/usr/sbin/groupadd -g 102 ssh' returned error code 10. Exiting.
dpkg: error processing openssh-client (--configure):
 subprocess installed post-installation script returned error exit status 1
E: Sub-process /usr/bin/dpkg returned an error code (1)

すると groupadd に失敗する、という

なぜ?と思って groupadd を直接叩いたらこんなエラー

groupadd: failure while writing changes to /etc/group

/etc/group に書き込めない?

# ls -adl /etc/group
-rw-r--r--. 1 root root 461 Aug 19 09:17 /etc/group

いや、書き込めないわけないよね

google 先生に聞いてもあんまり記事が出てこなかったが、 ubuntu の official-images にこんな issue が

github.com

SELinux?

いや、 ubuntu のイメージなんだけど・・・
あ、ホストの CentOS の SELinux か

(docker ホスト)
# getenforce
Enforcing

有効になってる

# setenforce 0
# getenforce
Permissive

無効にして、
Dockerfile を走らせたらすべてうまくいきました

なんでなのかはよくわからなかった
直接書いたら書けるしなー
groupadd の中身で何かあるのかな?

そういえば普通のユーザーは問題なく追加できてたな・・・

とりあえず、 build の時は Permissive にして、普段は Enforcing にする、みたいな感じで今の所やってる