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