আমি এই সমস্যাটি একটি CentOS: 7 ডকারের ধারকটিতে সমাধান করতে পেরেছি। আমি মূলত সেন্টস ডকার ইমেজ প্রকল্পের গাইডটি অনুসরণ করেছি ।
FROM centos:7
ENV container docker
RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == \
systemd-tmpfiles-setup.service ] || rm -f $i; done); \
rm -f /lib/systemd/system/multi-user.target.wants/*;\
rm -f /etc/systemd/system/*.wants/*;\
rm -f /lib/systemd/system/local-fs.target.wants/*; \
rm -f /lib/systemd/system/sockets.target.wants/*udev*; \
rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \
rm -f /lib/systemd/system/basic.target.wants/*;\
rm -f /lib/systemd/system/anaconda.target.wants/*;
# Install anything. The service you want to start must be a SystemD service.
CMD ["/usr/sbin/init"]
এখন, চিত্রটি তৈরি করুন এবং কমপক্ষে নিম্নলিখিত আর্গুমেন্টটি ব্যবহার করে এটি চালান docker run
:-v /run -v /sys/fs/cgroup:/sys/fs/cgroup:ro
তারপরে মূল বিষয়টি হ'ল /usr/sbin/init
ডকারের ধারকটির ভিতরে এটি অবশ্যই প্রথম প্রক্রিয়া।
সুতরাং আপনি যদি কোনও কাস্টম স্ক্রিপ্ট ব্যবহার করতে চান যা চালানোর আগে কিছু কমান্ড কার্যকর করে /usr/sbin/init
, এটি আপনার স্ক্রিপ্টের শেষে exec /usr/sbin/init
(ব্যাশ স্ক্রিপ্টে) ব্যবহার করে চালু করুন ।
এখানে একটি উদাহরণ:
ADD cmd.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/cmd.sh
CMD ["/usr/local/bin/cmd.sh"]
এবং এখানে লিখিত সামগ্রী cmd.sh
:
#!/bin/bash
# Do some stuffs
exec /usr/sbin/init # To correctly start D-Bus thanks to https://forums.docker.com/t/any-simple-and-safe-way-to-start-services-on-centos7-systemd/5695/8
আপনি System is booting up. See pam_nologin(8)
যদি পিএএম সিস্টেম ব্যবহার করে থাকেন তবে সেই ক্ষেত্রে /usr/lib/tmpfiles.d/systemd-nologin.conf
আপনার মুছুন Dockerfile
কারণ এটি ফাইল তৈরি করে /var/run/nologin
যা এই নির্দিষ্ট ত্রুটিটি উত্পন্ন করে।
sudo
?