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 を実行する方法

推薦する

MySQL の削除に基づく構文エイリアスの問題

目次MySQL 削除構文エイリアスの問題mysql の delete ステートメントでエイリアスを使...

MySQLがフルテーブルスキャンを実行するいくつかの状況

目次ケース1:ケース2:ケース3:簡単にまとめると:過去 2 日間で、完全なテーブル スキャンを引き...

MySQL 高可用性クラスタの展開とフェイルオーバーの実装

目次1. 内閣府1. コンセプト2. MHAの構成3. MHAの特徴2. MySQL+MHAをビルド...

Docker Compose を使用して ELK を迅速にデプロイする (テスト済みで効果的)

目次1. 概要1.1 定義1.2 機能説明2. ELKを展開する2.1 ディレクトリとファイルを作成...

JavaScript が重複したネットワークリクエストを防ぐ方法の例

序文開発中は、インターフェース要求の繰り返しによってさまざまな問題が発生することがよくあります。ネッ...

React のネストされたコンポーネントの構築順序

目次Reactの公式サイトではライフサイクルの説明を見ることができます次に、ネストされたコンポーネン...

Linux で rpm パッケージを見つけるために CD をマウントする方法

前面に書かれたLinux を使用する際にソフトウェアをインストールする必要がある場合があります。もち...

CentOS6.8 は cmake を使用して MySQL5.7.18 をインストールします。

オンライン情報を参考に、cmakeを使用してCentOS6.8サーバーにMySQL5.7.18をイン...

Uniappの小規模プログラム開発経験

1. 新しいUIプロジェクトを作成するまず、私たちの UI は ColorUI に基づいています。C...

Rancher のデプロイメントと K8S クラスターのインポートに関する問題

Rancher のデプロイメントには、次の 3 つのアーキテクチャがあります。高可用性 Kubern...

純粋な CSS3 を使用して、円の動的な光る特殊効果アニメーションを実装するためのサンプル コード

この記事では、主に、円形のダイナミックな光る特殊効果アニメーションを実現するための純粋な CSS3 ...

Mysql データベースの日付と日時型でデフォルト値 0000-00-00 を設定するときに発生するエラー問題の詳細な説明

現象: MySQL バージョン 5.7 以降では、日付型と日付時刻型のデフォルト値が「0000-00...

JavaScript でシンプルなクリスマス ゲームを実装する

目次序文成果を達成するコードCSSコードJSコードHTMLコードデモンストレーションのプロセス序文ク...

Vue でスロットを使用する方法についての簡単な説明

定義と使用方法:コンポーネントのテンプレートでスロットタグの定義を使用します。デフォルトの表示値は、...

CSS flex 複数列レイアウト

基本的な3列レイアウト 。容器{ ディスプレイ: フレックス; 幅: 500ピクセル; 高さ: 20...