docker で systemctl を使用してサービスを開始する際のエラーの解決方法の詳細な説明

docker で systemctl を使用してサービスを開始する際のエラーの解決方法の詳細な説明

Docker バージョン:

[root@localhost gae_proxy]# docker バージョン
クライアント:
 バージョン: 1.10.3
 APIバージョン: 1.22
 パッケージバージョン: docker-common-1.10.3-46.el7.centos.10.x86_64
 Goバージョン: go1.6.3
 Git コミット: d381c64-unsupported
 作成日: 2016年8月4日 木 13:21:17
 OS/アーキテクチャ: linux/amd64

サーバ:
 バージョン: 1.10.3
 APIバージョン: 1.22
 パッケージバージョン: docker-common-1.10.3-46.el7.centos.10.x86_64
 Goバージョン: go1.6.3
 Git コミット: d381c64-unsupported
 作成日: 2016年8月4日 木 13:21:17
 OS/アーキテクチャ: linux/amd64

画像バージョン

[root@b2ca5610d3da /]# cat /etc/redhat-release
CentOS Linux リリース 7.2.1511 (コア) 

docker で systemctl を介してサービスを開始すると、常に「D-Bus 接続の取得に失敗しました: 操作は許可されていません」などのエラー メッセージが報告されます。

[root@25d27693a24d ~]# systemctl sshd を起動します
D-Bus 接続に失敗しました: 操作は許可されていません

解決策は、docker の実行時に /usr/sbin/init を実行することです。例えば:

[root@localhost /]# docker run -tid --name hadoopbase centos/hadoopbase:v001 /usr/sbin/init

このように起動しているコンテナは、systemctl を使ってサービスを起動することができます。systemctl 経由で実行した場合にエラーが発生する問題は CentOS7.2 で解決されたという人もいますが、実際の運用ではまだそのような問題に遭遇します。

もう 1 つの解決策は、Dockerfile を使用してイメージ ファイルを生成するときに、CMD 経由で /usr/sbin/init コマンドを実行することです。つまり、CMD ["/usr/sbin/init"];

参考: https://github.com/docker/docker/issues/7459
参考:

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • CentOS 7 での Docker プロキシの設定 (Linux での Systemd サービスの環境変数設定)
  • docker システムコマンドセットの使用

<<:  MySQL の order by ステートメントの最適化方法の詳細な説明

>>:  Jupyter Notebook で JavaScript を実行する方法

推薦する

Nginx でバージョン番号を隠す方法

Nginx はバージョン番号を非表示にする実稼働環境では、セキュリティ上の脆弱性の漏洩を避けるために...

JavaScript関数の使い方の詳細な説明

目次1. 関数を宣言する2. 関数の呼び出し3. 関数パラメータ4. 関数の戻り値5. 議論の使用6...

MySQL インデックス プッシュダウンの詳細

目次1. 左端接頭辞原則2. 表に戻る3. インデックスプッシュダウン序文:インデックス プッシュダ...

MySQL で不明なフィールド名を回避する方法

序文この記事では、DDCTF の 5 番目の質問、つまり不明なフィールド名をバイパスする手法を紹介し...

CSS 境界線の長さ制御機能の実装

以前は、境界線の長さをコンテナーよりも小さくする必要があったときに、div ネストを使用していました...

Linux で at および cron スケジュールタスクをカスタマイズする方法

Linux システムには 2 種類のスケジュールされたタスクがあります。1 つは 1 回だけ実行され...

MySQL 8.0 ディクショナリテーブル拡張の詳細な説明

MySQL のデータ ディクショナリは、データベースの重要なコンポーネントの 1 つです。INFOR...

MySQLデータベースのbinlogクリーンアップコマンドの詳細な説明

概要今日は主に、MySQL データベースから binlog ログを正しく削除する方法を紹介します。ロ...

Navicat Premier の MySQL へのリモート接続エラー 10038 の解決方法

MySQL へのリモート接続が失敗する場合は、次の理由が考えられます。 1. 若い男性/女性の方は、...

Docker イメージのダウンロードが遅すぎる場合の解決策

Docker イメージのダウンロードが停止したり、遅すぎたりするネットでいろいろな方法を検索しました...

Vueはel-tableを使用して列と行を動的に結合します

この記事の例では、el-tableを使用して列と行を動的にマージするVueの具体的なコードを参考まで...

Vue はファジークエリを実装します - MySQL データベースデータ

目次1. 需要2. 実装3. 結果1. 需要入力ボックスにデータを入力し、入力結果に基づいてデータベ...

VMwareのCentosシステムでNavicatがMySQLサーバーに接続できない問題を解決します

ホスト 'xxxx' はこの MySQL サーバーに接続できませんエラー: 1130...

CSS マージンの重複とその防止方法

2 つ以上のブロックレベル ボックスの垂直に隣接するエッジが重なり合っています。結果として得られる境...

VueはCanvasを使用してランダムなサイズで重なり合わない円を生成します

目次キャンバス関連文書エフェクト画像表示ケースの完全なコード親コンポーネントコードサブコンポーネント...