web-dev-qa-db-ja.com

SSHdはDockerコンテナにログインし、「docker logs」には表示されません

使用する場合

CMD ["/usr/sbin/sshd", "-D"]

dockerfileでは、docker logsはログを表示しません。

cat > Dockerfile.stdout <<EOF
FROM Alpine:latest
RUN    apk add --no-cache openssh-server \
    && mkdir /var/run/sshd \
    && ssh-keygen -A
CMD ["/usr/sbin/sshd", "-D"]
EOF

docker build -f Dockerfile.stdout -t sshd-stdout .

docker run --name sshd-stdout -d sshd-stdout

docker logs sshd-stdout
<empty>

DockerホストはCentOSです。

cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)

Dockerロギングバックエンドがジャーナルされます:

grep ^OPTIONS /etc/sysconfig/docker
OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false'

また、jsonをロギングバックエンドとして使用しようとしましたが、成功しませんでした。

ロギングを正しく「転送」するにはどうすればよいですか?


@marioavsで提案されているように、「-e」が必要です。 '-e'と '-D'を試しましたが、両方を同時には試していません。そう:

cat > Dockerfile.stdout <<EOF
FROM Alpine:latest
RUN    apk add --no-cache openssh-server \
    && mkdir /var/run/sshd \
    && ssh-keygen -A
CMD ["/usr/sbin/sshd", "-D", "-e"]
EOF
3
Willem

-eコマンドラインオプションを使用して、すべてのメッセージを標準エラーに転送します(sshdドキュメントから):

-eシステムログではなく標準エラーにデバッグログを書き込みます。

次のDockerファイルで良い例を見つけました。

シンプルなアルパインベースのSSHDサーバー

1
marioavs