このコマンドはsystemctl status
効果がありません。一度もなかった。私のコンテナはCentOS 7にあります。質問をするとsystemctl status
結果が出るFailed to get D-Bus connection: operation not permitted.
返品
- その後、systemdのアップグレードを検討しました。ファイルを削除しました
/etc/yum/protected.d/system.conf
。その後、yum remove systemd
.systemdバージョン219-19.el7_2.4がインストールされていることを確認しました。私はN
実際にsystemdを削除しないことにしました。その後、systemd-libs-219-19.el7_2.7.x86_64.rpmをインストールしました。その後、systemdバージョン2.7をインストールしました。その後、yum remove systemd
バージョンを確認するために使用します。 systemdバージョン219-19.el7_2.7がインストールされていることを確認しました。削除を中止することを選択しましたNO
。 systemctl 状態がまだ機能していません。同じエラーが発生しました。Failed to get D-Bus connection: operation not permitted.
-privileged
このフラグを使用して新しいDockerコンテナを作成しました。このオプションを使用すると、-p 80:80
Docker実行コマンドは失敗します。-p 80:80
コマンドからオプションを省略すると、docker run
新しいコンテナでも同じ問題が発生します。- 「オプションを使用してDockerコンテナを作成しました
docker run ... -v /sys/fs/cgroup:/sys/fs/cgroup:ro
。また、同じ問題に直面しました。
systemctl status
Dockerコンテナ内で作業したいです。
systemctl status
Dockerコンテナで作業するにはどうすればよいですか?
答え1
CentOS:7 Dockerコンテナでこの問題を正常に解決しました。私の主な関心事はCentOS Dockerイメージプロジェクトガイド。
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
Dockerコンテナの最初のプロセスでなければならないということです。
/usr/sbin/init
したがって、実行する前にいくつかのコマンドを実行するカスタムスクリプトを使用するには、スクリプトの最後でexec /usr/sbin/init
(bashスクリプトから)起動します。
例は次のとおりです。
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)
PAMシステムを使用している場合は、この特定のエラーを生成するファイルを/usr/lib/tmpfiles.d/systemd-nologin.conf
生成するため、ファイルを削除できます。Dockerfile
/var/run/nologin
答え2
次のようにdockerを実行します。これは私にとって効果的でした。
docker run -it --privileged -p 10081:80 centos7 /bin/bash