いろいろハマったのでメモ。
ハマりポイントが多すぎて調べきれてないので、一旦成功したDockerfileを書いておく。
FROM tukiyo3/centos7-ja-systemd
# 必要に応じ
RUN yum -y install systemd-libs-208-11.el7_0.4 systemd-sysv-208-11.el7_0.4
# systemdがupdateされてerrorが発生するためらしい。`
RUN echo 'exclude=systemd*' >> /etc/yum.conf
RUN yum -y update
# install package
RUN yum -y install passwd openssh openssh-server openssh-clients sudo rsync git vim && \
# Create user
useradd docker && \
passwd -f -u docker && \
# Set up SSH
mkdir -p /home/docker/.ssh; chown docker /home/docker/.ssh; chmod 700 /home/docker/.ssh && \
echo "公開鍵" > /home/docker/.ssh/authorized_keys && \
chown docker /home/docker/.ssh/authorized_keys && \
chmod 600 /home/docker/.ssh/authorized_keys && \
# setup sudoers
echo "docker ALL=(ALL) ALL" >> /etc/sudoers.d/docker && \
# Set up SSHD config
sed -ri 's/#PermitRootLogin yes/PermitRootLogin yes/g' /etc/ssh/sshd_config && \
sed -ri 's/UsePAM yes/#UsePAM yes/g' /etc/ssh/sshd_config && \
sed -ri 's/#UsePAM no/UsePAM no/g' /etc/ssh/sshd_config && \
# PAMを利用するときには下記をオフにしないとSSHログインできない
# Centos7からPAMをオフにするのが推奨されてないので、下記設定は必須?
sed -i -e 's/^\(session.*pam_loginuid.so\)/#\1/g' /etc/pam.d/sshd
すでに回避されている方がいたのでそれを丸パクリして、あとはsshdできるようにもろもろ設定してこのような形になりました。もう少し細かい部分まで調べておきたいですね。
参考
-
[vagrant - Dockerfileから、centos7のサービスを起動したい - スタック・オーバーフロー] (http://ja.stackoverflow.com/questions/5544/dockerfile%E3%81%8B%E3%82%89-centos7%E3%81%AE%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%82%92%E8%B5%B7%E5%8B%95%E3%81%97%E3%81%9F%E3%81%84)
-
[CentOS7 + systemd + Docker でインフラCIをやっていく - Qiita] (http://qiita.com/udzura/items/fa93f262bbe036a1413e)
-
[CentOS 7のDockerコンテナ内でsystemdを使ってサービスを起動する - Qiita] (http://qiita.com/yunano/items/9637ee21a71eba197345)
-
[CentOS7 の OpenSSH — togakushi.bitbucket.org 0.1 documentation] (http://togakushi.bitbucket.org/build/html/centos7_sshd.html)