Tôi đã gặp vấn đề tương tự và nghĩ rằng nó có thể được giải quyết đơn giản bằng công việc cron gọi số unattended-upgrade
hàng ngày.
Mục đích của tôi là có giải pháp tự động và nhanh chóng để đảm bảo rằng thùng chứa sản phẩm được bảo mật và cập nhật vì có thể mất một thời gian để cập nhật hình ảnh của tôi và triển khai hình ảnh đế mới với bản cập nhật bảo mật mới nhất.
Nó cũng có thể để tự động hóa việc xây dựng hình ảnh và triển khai với Github hooks
tôi đã tạo ra một cơ bản docker image với điều đó tự động kiểm tra và cài đặt cập nhật bảo mật hàng ngày (có thể chạy trực tiếp bởi docker run itech/docker-unattended-upgrade
).
Tôi cũng đã xem một số khác nhau approach để kiểm tra xem vùng chứa có cần cập nhật hay không.
thực hiện hoàn chỉnh của tôi:
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
Helper script
cài đặt
#!/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"]
bắt đầu
Sửa
tôi đã phát triển một công cụ nhỏ docker-run chạy như container Docker và có thể được sử dụng để cập nhật các gói bên trong toàn bộ hoặc một container chạy được lựa chọn, nó cũng có thể được sử dụng để chạy bất kỳ lệnh tùy ý nào.
Có thể dễ dàng kiểm tra bằng lệnh sau:
docker run --rm -v /var/run/docker.sock:/tmp/docker.sock itech/docker-run exec
mà theo mặc định sẽ thực hiện date
lệnh trong tất cả các container chạy và hiển thị kết quả. Nếu bạn vượt qua update
thay vì exec
nó sẽ thực hiện apt-get update
Tiếp theo apt-get upgrade -y
trong tất cả các container chạy
Tôi đang tìm câu trả lời cho điều này kể từ khi bắt đầu trình docker. Nó thậm chí còn phức tạp hơn một chút. Nếu tôi cài đặt apache (ví dụ) và được cập nhật, hình ảnh gốc sẽ không thay đổi, vì tôi đã cài đặt nó sau đó. Tôi vẫn muốn có tự động cập nhật cho apache. Tôi thực sự hỏi trong IRC về điều này và đã "theo dõi thượng nguồn và xây dựng lại trên cập nhật" như một câu trả lời ... – Mathias
Vui vì tôi không phải là người duy nhất tự hỏi. Có vẻ như sự phát triển và khả năng tái tạo là quan trọng hơn đối với các nhà phát triển docker hơn là các cơ chế cập nhật hợp lý mà chúng ta đã có trong nhiều năm nay. – hbogert
Vấn đề là, docker chỉ là công nghệ cho các container. Tôi nghĩ rằng nó cần một thời gian để một hệ sinh thái phát triển xung quanh đó. Có những vấn đề khác docker không địa chỉ như đăng nhập. – Mathias