某SNMP Managerなサーバを作るための準備として、rsyslogとsshが動いているCentOS7なコンテナを作ってみました。
仕様
- タイムゾーンはJST
- rootでsshアクセス可能
- rootのパスワードはhogehoge
※listen.confの変更と、ssh-keygenに触れている資料が見付けられるまでの間、嵌まりました。
手順
# カレントフォルダにDockerfileとsupervisord.confを置きます # コンテナ作成 docker build -t template . # コンテナ起動(ssh用ポートを10022としています) docker run -d --name test -p 10022:22 template # コンソールに接続 docker exec -it test /bin/bash
Dockerfile
FROM centos:7 RUN yum -y update \ && rm -f /etc/localtime \ && ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime \ && yum -y install rsyslog passwd openssh-server openssh-clients initscripts \ && yum -y install https://centos7.iuscommunity.org/ius-release.rpm \ && yum -y install python36u python36u-devel python36u-libs python36u-pip python36u-setuptools \ && yum -y install supervisor \ && sed 's/$ModLoad imjournal/# $ModLoad imjournal/' -i /etc/rsyslog.conf \ && sed 's/$OmitLocalLogging on/$OmitLocalLogging off/' -i /etc/rsyslog.conf \ && sed 's/$IMJournalStateFile imjournal.state/# $IMJournalStateFile imjournal.state/' -i /etc/rsyslog.conf \ && sed 's/$SystemLogSocketName/# $SystemLogSocketName/' -i /etc/rsyslog.d/listen.conf \ && mkdir /var/run/sshd \ && echo 'root:hogehoge' | chpasswd \ && sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config \ && sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd \ && echo "export VISIBLE=now" >> /etc/profile \ && /usr/bin/ssh-keygen -A COPY supervisord.conf /etc/supervisord.conf EXPOSE 22 CMD ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]
supervisord.conf
[unix_http_server] file=/tmp/supervisor.sock ; the path to the socket file [supervisord] logfile=/tmp/supervisord.log ; main log file; default $CWD/supervisord.log logfile_maxbytes=50MB ; max main logfile bytes b4 rotation; default 50MB logfile_backups=10 ; # of main logfile backups; 0 means none, default 10 loglevel=info ; log level; default info; others: debug,warn,trace pidfile=/tmp/supervisord.pid ; supervisord pidfile; default supervisord.pid nodaemon=true ; start in foreground if true; default false minfds=1024 ; min. avail startup file descriptors; default 1024 minprocs=200 ; min. avail process descriptors;default 200 [rpcinterface:supervisor] supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface [supervisorctl] serverurl=unix:///tmp/supervisor.sock ; use a unix:// URL for a unix socket [program:sshd] command=/usr/sbin/sshd -D -e autostart=true autorestart=true startretries=3 [program:rsyslog] command=/usr/sbin/rsyslogd -n -c5 autostart=true autorestart=true stdout_logfile=/var/log/messages stderr_logfile=/var/log/messages redirect_stderr=true