Saya memiliki masalah yang sama dan berpikir itu bisa diselesaikan dengan cron job calling unattended-upgrade
setiap hari.
Tujuan saya adalah menjadikan ini sebagai solusi otomatis dan cepat untuk memastikan bahwa wadah produksi aman dan diperbarui karena kadang-kadang saya perlu memperbarui gambar saya dan menggunakan gambar buruh pelabuhan baru dengan pembaruan keamanan terbaru.
Dimungkinkan pula untuk mengotomatisasi pembuatan dan penyebaran gambar dengan kait Github
Saya telah membuat gambar buruh pelabuhan dasar dengan yang secara otomatis memeriksa dan menginstal pembaruan keamanan setiap hari (dapat dijalankan langsung oleh docker run itech/docker-unattended-upgrade
).
Saya juga menemukan pendekatan lain yang berbeda untuk memeriksa apakah wadah perlu pembaruan.
Implementasi lengkap saya:
Dockerfile
FROM ubuntu:14.04
RUN apt-get update \
&& apt-get install -y supervisor unattended-upgrades \
&& rm -rf /var/lib/apt/lists/*
COPY install /install
RUN chmod 755 install
RUN /install
COPY start /start
RUN chmod 755 /start
Skrip pembantu
Install
#!/bin/bash
set -e
cat > /etc/supervisor/conf.d/cron.conf <<EOF
[program:cron]
priority=20
directory=/tmp
command=/usr/sbin/cron -f
user=root
autostart=true
autorestart=true
stdout_logfile=/var/log/supervisor/%(program_name)s.log
stderr_logfile=/var/log/supervisor/%(program_name)s.log
EOF
rm -rf /var/lib/apt/lists/*
ENTRYPOINT ["/start"]
Mulailah
#!/bin/bash
set -e
echo "Adding crontab for unattended-upgrade ..."
echo "0 0 * * * root /usr/bin/unattended-upgrade" >> /etc/crontab
# can also use @daily syntax or use /etc/cron.daily
echo "Starting supervisord ..."
exec /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf
Edit
Saya mengembangkan alat docker-run kecil yang berfungsi sebagai wadah buruh pelabuhan dan dapat digunakan untuk memperbarui paket di dalam semua atau kontainer yang berjalan yang dipilih, itu juga dapat digunakan untuk menjalankan perintah sewenang-wenang.
Dapat dengan mudah diuji dengan perintah berikut:
docker run --rm -v /var/run/docker.sock:/tmp/docker.sock itech/docker-run exec
yang secara default akan menjalankan date
perintah di semua wadah yang berjalan dan menampilkan hasilnya. Jika Anda lulus update
alih-alih exec
itu akan menjalankan apt-get update
diikuti oleh apt-get upgrade -y
di semua wadah berjalan