Tôi có một Docker container đang chạy systemd . Tôi muốn chuyển các biến môi trường cho các ứng dụng theo nó.
Khi tôi khởi động systemd từ bên trong Docker ( /sbin/init
dưới dạng dòng lệnh), Docker hiển thị các biến cho systemd, nhưng không hiển thị cho các dịch vụ con . Nếu tôi thêm systemd.setenv=...
vào cmdline, các biến được thông qua. Tôi đang tìm kiếm một giải pháp sạch hơn.
Làm cách nào để hiển thị các biến môi trường được truyền /sbin/init
cho các ứng dụng được bắt đầu bởi nó?
% docker run -v /sys/fs/cgroup:/sys/fs/cgroup:ro --privileged -ti \
-e VAR1=1 motiejus/systemd_fedora20 \
init systemd.setenv=VAR2=2
...
Welcome to Fedora 20 (Heisenbug)!
...
[ OK ] Reached target Multi-User System.
[root@740690365eb0 ~]# env | grep VAR
VAR2=2
Tôi hy vọng sẽ thấy VAR1=1
trong khi chạy lệnh của tôi.
Nói cách khác, systemd có thể truyền các biến được truyền cho nó cho trẻ em không?
Đối với Dockerfile, xem kho lưu trữ github .