Ssh

docker logs 未顯示 Docker 容器中的 SSHd 日誌

  • June 19, 2019

使用時

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

使用**-e**命令行選項將所有消息轉發到標準錯誤(來自 sshd 文件):

-e將調試日誌寫入標準錯誤而不是系統日誌。

我在以下 Docker 文件中找到了一個很好的範例:

簡單的基於 alpine 的 SSHD 伺服器

引用自:https://serverfault.com/questions/952391