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

推薦する

Docker と Intellij IDEA の融合により、Java 開発の生産性が 10 倍向上

目次1. 開発前の準備2. 新しいプロジェクトIdea は Java 開発のための強力なツールであり...

Linux で特定の時間にコマンドを実行する方法

先日、rsync を使用して LAN 上の別のシステムに大きなファイルを転送していました。非常に大き...

MySQL アカウント情報をエレガントにバックアップする方法

序文:最近、インスタンスの移行の問題に遭遇しました。データの移行後、データベースのユーザーと権限も移...

Linux での syslogd および syslog.conf ファイルの解釈

1: syslog.conf の概要異なるタイプの Unix の場合、標準の UnixLog システ...

MySQL mysqladmin クライアントの使用の概要

目次1. サーバーの状態を確認します。 2. ルートパスワードを変更します。 3. mysqlser...

要素の$notifyポイントについての簡単な説明

当初の意図は、element-ui の $notify 通知をコンポーネントにカプセル化することでし...

MySQL 8.0.12 解凍バージョンのインストールチュートリアル

この記事では、MySQL 8.0.12解凍版のインストールチュートリアルを参考までに紹介します。具体...

Apache ソースコードのインストールと仮想ホストの設定に関する詳細なチュートリアル

ソースからApacheをインストールする1. Apacheソースコードをアップロードして必要なソフト...

初心者がHTMLタグを学ぶ(2)

初心者は、いくつかの HTML タグを理解することで HTML を学習できます。この入門書は、初心者...

CSS と JavaScript を使用して管理ダッシュボードのレイアウトを構築するためのサンプル コード

あなたが作成するものこの新しいチュートリアルでは、CSS と JavaScript を使用して、レス...

ウェブページのフッターで注意すべきことのまとめ

たくさんのリンクおそらく、このようなサイトをたくさん見たことがあるでしょう。ページの下部に 50 個...

冗長カーネルを削除するLinuxディープインの実装方法

前の記事では、deepin linux に新しいカーネルを手動でインストールする方法について説明しま...

MySQLデータベースのマスタースレーブレプリケーションの原理と機能の分析

目次1. データベースのマスター/スレーブ分類: 2. MySQL マスタースレーブの紹介3. マス...

Nginx で https をアップグレードする方法

購入証明書Alibaba CloudのCloud Shield証明書サービスから購入できます。証明書...

Linux Jenkins 構成スレーブノード実装プロセス図

序文: Jenkins のマスター スレーブ分散アーキテクチャは、主に、Jenkins に単一ポイン...