আমার একই সমস্যা ছিল এবং ভেবেছিলাম এটি কেবল ক্রোন জব দ্বারা unattended-upgrade
প্রতিদিন কল করে সমাধান করা যেতে পারে ।
আমার ধারনাটি হ'ল এটি একটি স্বয়ংক্রিয় এবং দ্রুত সমাধান হিসাবে উত্পাদনের ধারকটি সুরক্ষিত এবং আপডেট হয়েছে তা নিশ্চিত করার কারণ এটি আমার চিত্রগুলি আপডেট করতে এবং সর্বশেষতম সুরক্ষা আপডেটের সাথে একটি নতুন ডকার চিত্র স্থাপন করতে পারে can
গিথুব হুকের সাহায্যে ইমেজ বিল্ড এবং স্থাপনার স্বয়ংক্রিয় করাও সম্ভব
আমি একটি বেসিক ডকার ইমেজ তৈরি করেছি যা স্বয়ংক্রিয়ভাবে প্রতিদিন সুরক্ষা আপডেটগুলি পরীক্ষা করে এবং ইনস্টল করে (সরাসরি চালিয়ে যেতে পারে docker run itech/docker-unattended-upgrade
)।
ধারকটির কোনও আপডেট দরকার কিনা তা যাচাই করতে আমি আরও একটি ভিন্ন পদ্ধতির মুখোমুখি এসেছি ।
আমার সম্পূর্ণ বাস্তবায়ন:
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
সহায়ক স্ক্রিপ্ট
ইনস্টল
#!/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"]
শুরু
#!/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
সম্পাদন করা
আমি একটি ছোট সরঞ্জাম ডকার-রান বিকাশ করেছি যা ডকার কনটেইনার হিসাবে চালিত হয় এবং সমস্ত বা নির্বাচিত চলমান ধারকগুলির অভ্যন্তরে প্যাকেজ আপডেট করতে ব্যবহার করা যেতে পারে, এটি যেকোনও স্বেচ্ছাসেবক কমান্ড চালাতে ব্যবহার করা যেতে পারে।
নিম্নলিখিত কমান্ড দিয়ে সহজে পরীক্ষা করা যেতে পারে:
docker run --rm -v /var/run/docker.sock:/tmp/docker.sock itech/docker-run exec
যা ডিফল্টরূপে date
সমস্ত চলমান পাত্রে কমান্ড কার্যকর করবে এবং ফলাফলগুলি প্রদর্শন করবে। আপনি পাস যদি update
পরিবর্তে exec
এটি চালানো হবে apt-get update
দ্বারা অনুসরণ apt-get upgrade -y
চলমান সমস্ত পাত্রে