ホームページ 運用・保守 Docker Docker のオフライン インストールが開始できない

Docker のオフライン インストールが開始できない

Apr 25, 2023 am 09:02 AM

現在のクラウド コンピューティングとコンテナ化の波の下で、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/docker

cp docker-ce*.rpm /var/docker
createrepo /var/docker

2.3 /etc/yum で yum ソース

を構成します。新しいリポジトリ ファイルを .repos.d ディレクトリに作成し、次の内容を記述します

[docker-local]

name=Docker Local repo
baseurl=file:///var/docker
Enabled=1
gpgcheck=0

2.4 Docker のインストール

次のコマンドを実行して Docker をインストールします

yum install docker-ce

二、起動エラーの解決策

1. 問題の説明

#上記の Docker のオフライン インストールを完了した後、Docker の起動エラーが発生し、次のエラーが発生する場合があります:

$ sudo systemctl start docker

制御プロセスがエラー コードで終了したため、docker.service のジョブが失敗しました。
詳細については、「systemctl status docker.service」および「journalctl -xe」を参照してください。

systemctl status の実行docker.service コマンドは、起動失敗の理由が docker.service ファイル内の「ExecStart」コマンドが正常に実行できないことであることを示しています:

$ sudo systemctl status docker.service

...
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 アプリケーション コンテナ エンジンが停止しました。

$sudojournalctl -xe

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

2. 問題分析

上記のエラー メッセージから、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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Docker Swarmクラスターにアプリケーションを展開するにはどうすればよいですか? Docker Swarmクラスターにアプリケーションを展開するにはどうすればよいですか? Mar 17, 2025 pm 04:20 PM

この記事では、プロセス中の準備、展開ステップ、セキュリティ対策をカバーするDocker Swarmへのアプリケーションの展開を詳細に説明します。

Kubernetesのポッド、展開、サービスとは何ですか? Kubernetesのポッド、展開、サービスとは何ですか? Mar 17, 2025 pm 04:25 PM

この記事では、Kubernetesのポッド、展開、およびサービスについて説明し、コンテナ化されたアプリケーションの管理における役割について詳しく説明しています。これらのコンポーネントが、アプリケーション内のスケーラビリティ、安定性、および通信をどのように強化するかについて説明します。(159文字)

Kubernetesでアプリケーションをスケーリングするにはどうすればよいですか? Kubernetesでアプリケーションをスケーリングするにはどうすればよいですか? Mar 17, 2025 pm 04:28 PM

この記事では、手動スケーリング、HPA、VPA、およびCluster Autoscalerを使用してKubernetesのスケーリングアプリケーションについて説明し、スケ​​ーリングを監視および自動化するためのベストプラクティスとツールを提供します。

Docker Swarmにローリングアップデートを実装するにはどうすればよいですか? Docker Swarmにローリングアップデートを実装するにはどうすればよいですか? Mar 17, 2025 pm 04:23 PM

この記事では、Docker Swarmにローリングアップデートを実装して、ダウンタイムなしでサービスを更新することについて説明します。サービスの更新、更新パラメーターの設定、監視の進捗状況、スムーズな更新の確保をカバーしています。

Docker Swarmでサービスを管理するにはどうすればよいですか? Docker Swarmでサービスを管理するにはどうすればよいですか? Mar 17, 2025 pm 04:22 PM

記事では、Docker Swarmのサービスの管理、ダウンタイムなしで作成、スケーリング、監視、更新に焦点を当てています。

Kubernetesでの展開を管理するにはどうすればよいですか? Kubernetesでの展開を管理するにはどうすればよいですか? Mar 17, 2025 pm 04:27 PM

この記事では、さまざまなツールとベストプラクティスを使用して、作成、更新、スケーリング、監視、および自動化に焦点を当てたKubernetesの展開の管理について説明します。

Docker Swarmクラスターを作成するにはどうすればよいですか? Docker Swarmクラスターを作成するにはどうすればよいですか? Mar 17, 2025 pm 04:19 PM

記事では、セットアップ、スケーリングサービス、セキュリティベストプラクティスなど、Docker Swarmクラスターの作成と管理について説明します。

Dockerインタビューの質問:DevOpsエンジニアリングインタビューをエース Dockerインタビューの質問:DevOpsエンジニアリングインタビューをエース Apr 06, 2025 am 12:01 AM

Dockerは、DevOpsエンジニアにとって必須のスキルです。 1.Dockerは、アプリケーションとその依存関係をコンテナにパッケージ化することにより、分離と移植性を実現するオープンソースのコンテナ化されたプラットフォームです。 2. Dockerは、名前空間、コントロールグループ、フェデレーションファイルシステムで動作します。 3。基本的な使用には、コンテナの作成、実行、管理が含まれます。 4.高度な使用法には、DockerComposeを使用してマルチコンテナーアプリケーションを管理することが含まれます。 5.一般的なエラーには、コンテナ障害、ポートマッピングの問題、データの持続性の問題が含まれます。デバッグスキルには、ログの表示、コンテナの入り、および詳細情報の表示が含まれます。 6.パフォーマンスの最適化とベストプラクティスには、画像の最適化、リソースの制約、ネットワーク最適化、DockerFileを使用するためのベストプラクティスが含まれます。

See all articles