ubuntu cron docker coreos

ubuntu - Problemas al ejecutar cron en Docker en diferentes hosts



docker crontab ubuntu (4)

En mi caso, depuro el cron:

$ apt-get install rsyslog $ rsyslogd $ service cron restart $ tail -f /var/log/syslog

Y encontró NUMBER OF HARD LINKS > 1 error en los registros.

La solución fue poner esto en entrypoint.sh

touch /etc/crontab /etc/cron.d/*

¡y bum!

Estoy tratando de hacer funcionar un contenedor acoplable para manejar mis cronjobs

Estoy ejecutando un cron muy simple como una prueba en un contenedor de docker utilizando centOS 6.5 base

* * * * * /bin/echo "it works!" >> test.log

funciona bien si el contenedor se ejecuta en el host CoreOS, sin embargo, si ejecuto el contenedor en un host ubuntu 13.10, no se ejecutará el cron. (Pensé que el host no afectaba lo que se estaba ejecutando en el contenedor)

ambos hosts están ejecutando docker 0.8

¿Me estoy perdiendo algo obvio, o es esto un error?

Gracias


La respuesta de @dwitz es correcta, pero tuve que modificar un poco el comando sed para que funcione en Ubuntu 16.04 dentro de un contenedor acoplable.

cat /etc/pam.d/cron |sed -e "s/required pam_loginuid.so/optional pam_loginuid.so/g" > /tmp/cron && mv /tmp/cron /etc/pam.d/cron


los contenedores base Docker no inician servicios como cron; solo comienzan lo que especifiques en ENTRYPOINT / CMD

algunos contenedores "más gordos" usan cosas como supervisión para iniciar servicios, pero donde es posible, es más fácil separar servicios en diferentes contenedores y compartir datos usando contenedores de volumen, o


respuesta corta

agregue esta línea a su archivo docker

RUN sed -i ''/session required pam_loginuid.so/c/#session required pam_loginuid.so'' /etc/pam.d/crond

la respuesta larga

por lo que entiendo, el problema está relacionado con las diferencias en el kernel entre CoreOS y Unbutu. esto a su vez causa un problema de seguridad pam.

para calcularlo, nuestro primero necesitaba activar el registro para cron (dado que estamos en la ventana acoplable, el inicio normal no se ejecuta). correr

service rsyslog start service crond restart

el registro cron tenía este error (ubicado aquí / var / log / cron)

FAILED to open PAM security session (Cannot make/remove an entry for the specified session)

entonces eché un vistazo al registro de seguridad, y tenía este error (ubicado aquí / var / log / secure)

pam_loginuid(crond:session): set_loginuid failed

un poco más en Google y descubrí que necesitaba modificar mi configuración de pam cond (que se encuentra aquí /etc/pam.d/crond) edite este archivo y comente la siguiente línea

#session required pam_loginuid.so

reiniciar crond y todo debería ser bueno