При использовании
CMD ["/usr/sbin/sshd", "-D"]
в файле Docker, журналы докеров
не отображают ведение журнала:
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 - journald:
grep ^OPTIONS /etc/sysconfig/docker
OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false'
I также безуспешно пытался использовать 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: