現在のクラウド コンピューティングとコンテナ化の波の下で、Docker は主流のアプリケーション コンテナ化テクノロジとして浮上し、運用、保守、開発の分野で最も広く使用されているツールの 1 つになりました。これに関連して、Docker のオフライン インストールも非常に一般的な要件となり、多くのユーザーがインターネットに接続できない、またはセキュリティなどの理由でインターネット接続が禁止されているため、オフライン インストールは最も便利なインストール方法の 1 つとなっています。しかし、Docker のオフラインインストールでは、インストールは成功しても起動に失敗することが多く、初心者にとっては非常に厄介な問題です。
この記事では、実際の操作から始まり、Docker のオフライン インストール方法を紹介し、起動失敗の詳細な分析を行って詳細なガイドを提供します。
1. Docker のオフライン インストール
Docker をオフラインでインストールするには 2 つの方法があります: 1 つは Docker バイナリ ファイルをダウンロードしてインストールする方法、もう 1 つは yum ソースを設定してインストールする方法です。前者は主にネットワーク条件のないサーバーに適しており、後者は Linux 開発環境のオフライン インストールに適しています。
1. Docker バイナリ ファイルをダウンロードしてインストールする
この方法の原理は比較的単純で、Docker バイナリ ファイルをローカルにダウンロードしてインストールします。具体的な手順は次のとおりです。
1.1 Docker バイナリ ファイルを取得する
公式 Web サイト https://www.docker.com/ から、対応するバージョンの Docker バイナリ ファイルをダウンロードします。ダウンロードする際には、現在のオペレーティング システムに関する情報が必要です。centos システムの場合は、次のアドレスに対応するバイナリ ファイルをダウンロードすることを選択できます。
https://download.docker.com/linux/static/stable/x86_64/ docker-versionnumber.tgz
1.2 Docker バイナリ ファイルのインストール
インストール時ダウンロードしたバイナリ ファイルを解凍し、docker および dockerd ファイルを /usr/bin ディレクトリに移動する必要があります。
tar -xvf docker-versionnumber.tgz
cp docker/* /usr/bin
2. yum ソースを設定してインストールします
centos システムの下に、yum ソースを構成することで、Docker をオフラインでインストールできます。具体的な手順は次のとおりです。
2.1 Docker の yum ソースを取得します。
公式 Web サイト https://www.docker.com/ から、対応するバージョンの Docker インストール パッケージをダウンロードします。ダウンロードする際には、現在のオペレーティング システムに関する情報を把握し、システム バージョンに対応する rpm パッケージをダウンロードする必要があります。
2.2 新しいローカル yum ソースの作成
ローカル yum ソース ディレクトリを作成し、ダウンロードした Docker インストール パッケージをこのディレクトリにコピーし、createrepo コマンドを使用してディレクトリを作成します
# mkdir /var/dockercp docker-ce*.rpm /var/docker
createrepo /var/docker
name=Docker Local repo
baseurl=file:///var/docker
Enabled=1
gpgcheck=0
制御プロセスがエラー コードで終了したため、docker.service のジョブが失敗しました。
詳細については、「systemctl status docker.service」および「journalctl -xe」を参照してください。
...
Apr 30 07:40:32 localhost.localdomain systemd[1]: Docker Application Container Engine を開始しました。
Apr 30 07:40:32 localhost.localdomain systemd[1]: docker.service: メインプロセスが終了しました、コード=exited 、status=1/FAILURE
Apr 30 07:40:32 localhost.localdomain systemd[1]: ユニット docker.service が失敗状態になりました。
Apr 30 07:40:32 localhost.localdomain systemd[1] ]: docker.service が失敗しました。
Apr 30 07:40:32 localhost.localdomain systemd[1]: docker.service ホールドオフ タイムオーバー、再起動のスケジュール設定。
Apr 30 07:40:32 localhost.localdomain systemd[ 1] : Docker アプリケーション コンテナ エンジンが停止しました。
dockerd-current[14552]: time="2020-04-30T07:40:32.652790118 08:00" level=error msg =" systemd notifier が失敗しました: systemd モジュール \"libsystemd.so\" をロードできません: 共有 o
dockerd-current[14552] を開けません: デーモンの起動に失敗しました: ネットワーク コントローラーの初期化エラー: ブリッジ アドレスのリストに失敗しました: PreDefinedLocalScopeDefaultNetworks リスト失敗: 事前定義された
dockerd-current[14552]: デーモンの開始エラー: ネットワーク コントローラーの初期化中にエラーが発生しました: ブリッジ アドレスの一覧表示に失敗しました: PredependentLocalScopeDefaultNetworks リストの失敗: 事前定義された
systemd[1]: docker.service: メイン プロセスが終了しました、コード =終了しました、ステータス = 1/FAILURE
systemd[1]: Docker Application Container Engine の開始に失敗しました。
systemd[1]: ユニット docker.service が失敗状態になりました。
systemd[1]: docker.service
上記のエラー メッセージから、Docker の起動に失敗した理由は、Docker のネットワーク コントローラーを起動できないためであることがわかります。具体的には、Docker のネットワーク コントローラーが iptables ファイアウォールを通じてコンテナ ネットワークを管理し、ファイアウォールがデフォルトですべての非ローカル トラフィックを禁止しているためです。 Docker の場合、初回起動時に iptables に関連ルールが自動的に追加されますが、オフラインでインストールされた Docker を初めて起動するとルールの追加に失敗し、ネットワーク コントローラーの起動に失敗します。具体的には、ユーザーが Docker を起動すると、Docker はローカル IP アドレスに基づいて docker0 という名前のブリッジを自動的に作成します。この操作が失敗すると、Docker を起動できなくなります。
3. 問題解決
この問題を解決するには、主に 2 つの方法があります:
3.1 docker0 ブリッジを作成する
docker0 ブリッジを手動で作成すると、問題を解決できます。この問題に対して、centos で次のコマンドを実行して docker0 ブリッジを手動で作成できます:
sudo ip link add name docker0 type Bridge
sudo ip addr add dev docker0 172.17.0.1/16
sudo ip link set dev docker0 up
上記の操作が完了したら、再度 Docker を起動し、管理者として次のコマンドを実行します。
$ sudo systemctl start docker
toスタートアップのDockerを完成させます。
3.2 ファイアウォール ルールを変更する
ファイアウォールを無効にするか、ファイアウォール ルールを変更することも、この問題を解決する効果的な方法です。ファイアウォールをオフにするときは、次のコマンドを使用できます:
$ systemctl stop firewalld
$ systemctl disable firewalld
ただし、この状況はお勧めできません。セキュリティ要件に従って可能な限りファイアウォールを使用します。
iptables ルールを変更する場合は、次のコマンドを使用してルールを追加できます:
$ sudo iptables -P FORWARD ACCEPT
$ sudo iptables -I FORWARD -j ACCEPT
$ sudo service iptables save
上記の操作を行った後、再度Dockerを起動すると正常に起動します。
3. 概要
この記事の導入部を通じて、Docker をオフラインでインストールすると、ネットワークの問題により Docker が起動しない可能性があることがわかりました。現時点では、Docker のネットワーク コントローラーの動作原理を理解し、手動で構成するか、iptables ファイアウォールに特定の変更を加えて、Docker の起動失敗の問題を最終的に解決する必要があります。もちろん、特定のエラー メッセージを適時に確認し、分析を行うことで、このような問題を解決することもできます。
したがって、Docker のオフライン インストールと起動中は、慎重かつ忍耐強く、実験とデバッグを続け、最終的には問題を解決する適切な方法を見つける必要があります。
以上がDocker のオフライン インストールが開始できないの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。