Dockerコンテナでyumを呼び出すときのエラーの解決方法

Dockerコンテナでyumを呼び出すときのエラーの解決方法

dockerfile またはコンテナ内で yum を実行すると、エラーが報告され、ソースが見つかりません (無効な baseurl xxx) が、ホスト マシンで yum を実行すると問題はありません。なぜでしょうか?

Dockerfile が RUN キーワードを使用して yum を実行するか、直接コンテナに入って yum を実行するかに関係なく、それらはすべて Docker イメージ内のソースを使用します (CentOS はパス /etc/yum.repo.d/CentOS-Base.repo にあります)。そのため、ホスト マシン上の同じパスにあるソースをコンテナにコピーしてから、docker commit で新しい「ベース イメージ」をコミットする必要があります。このとき、docker build xxx を使用すると (つまり、Dockerfile 方式を使用すると)、エラーは報告されません。

コピー方法: docker cp xxx xxx

コンテンツ拡張

dockerfile で yum 操作を実行するときにエラーが発生しました

まずエラーメッセージを見てみましょう:

ビルド コンテキストを Docker デーモンに送信 9.363 MB
ステップ1: docker.io/centosから
---> 196e0ce0c9fb
ステップ2: MAINTAINER Liuliangliang
---> キャッシュの使用
---> 7d7e06799c20
ステップ3: ファイル/tomcat7.tgz /usr/local/ を追加します。
---> キャッシュの使用
---> 10ffdea53a02
ステップ4: yum install java-1.8.0-openjdk -yを実行します。
---> 7824a339e077 で実行中
読み込まれたプラグイン: fastestmirror、ovl


構成されたリポジトリの1つが失敗しました(不明)。
yumは続行するのに十分なキャッシュデータを持っていません。この時点で唯一の
yum が安全に実行できるのは失敗することです。これを「修正」するには、いくつかの方法があります。

1. リポジトリのアップストリームに連絡して、問題を修正してもらいます。

2. リポジトリのbaseurl/etcを再設定し、動作するURLを指すようにします。
これは、新しい
リポジトリでサポートされているディストリビューションリリース(および
以前のディストリビューションリリースのパッケージは引き続き動作します)。

3. リポジトリを一時的に無効にしてコマンドを実行します。
yum --disablerepo=<repoid> ...

4. リポジトリを永続的に無効にして、yum がデフォルトでリポジトリを使用しないようにします。
リポジトリを永続的に有効にするまで無視されます
再度実行するか、一時的に --enablerepo を使用します。

yum-config-manager --disable <リポジトリ>
または
サブスクリプション マネージャー リポジトリ --disable=<repoid>

5. 障害が発生したリポジトリが利用できない場合は、スキップするように設定します。
yumはほとんどのコマンドを実行するときにリポジトリにアクセスしようとすることに注意してください。
だから毎回試して失敗することになる(そして、そう。yumははるかに
しかし、それが一時的な問題であれば、これは良い解決策となることが多いです。
妥協:

yum-config-manager --save --setopt=<repoid>.skip_if_unavailable=true

リポジトリの有効なベース URL が見つかりません: base/7/x86_64
ミラーリストを取得できませんでした http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=container エラーが発生し
14: curl#6 - 「ホストを解決できませんでした: mirrorlist.centos.org; 不明なエラー」
コマンド '/bin/sh -c yum install java-1.8.0-openjdk -y' がゼロ以外のコードを返しました: 1

解決:

DNSサービスをresolv.confファイルに追加するだけです。このファイルは/etcにあります。

ネームサーバー 8.8.8.8
ネームサーバー 8.8.4.4
ローカルドメインを検索

それでおしまい

これで、docker コンテナから yum を呼び出すときにエラーを解決する方法についての記事は終了です。docker コンテナから yum を呼び出すときにエラーを解決する方法についての詳細は、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • yum から docker インストール パッケージをダウンロードし、オフライン マシンにインストールする例の詳細なコード
  • docker 公式ソースを設定し、yum で docker をインストールする方法

<<:  数字当てゲームを実装するための純粋なJavaScript

>>:  MySQLはカスタム関数を使用して親IDまたは子IDを再帰的に照会します

推薦する

CentOSにDockerをインストールする方法

ここでは比較的簡単なインストール方法のみを紹介します。 1. yumを使用してインストールするyum...

MySQL の時間保持問題に関する簡単な分析

MySQL のデフォルトの時間タイプ (datetime と timestamp) の精度は秒です。...

HTML 再利用テクニック

HTML の再利用は、あまり話題に上らない言葉です。今日は、この問題を次のようにまとめたいと思います...

MySQL 起動エラー 1067 および文字セットを変更して再起動した後の無効な回復

公式サイトからmysql-5.6.37-winx64.zipの解凍バージョンをダウンロードし、構成フ...

ウェブページをデザインする際に注意すべきいくつかの問題

Web デザインは、個人の好みや Web ページの内容に応じて、デザインのレイアウトが常に変化します...

Vueでドラッグ可能なコンポーネントを実装する方法

この記事では、Vueでドラッグ可能なコンポーネントとドラッグ可能なコンポーネントを実装する方法を参考...

Mysql データベースのマスタースレーブ同期構成

目次Mysql マスタースレーブ同期構成1. 2つのmysqlをインストールする2. MySQL設定...

jsは画像切り取り機能を実現する

この記事の例では、画像の切り取りを実現するためのjsの具体的なコードを参考までに共有しています。具体...

JavaScript 状態コンテナ Redux の詳細な説明

目次1. Reduxを選ぶ理由2. Reduxデータフロー3つの原則4. Reduxソースコード分析...

Ubuntu の MySQL のパラメータ ファイル my.cnf の詳細な分析

序文MySQL に関する私の理解に基づくと、パフォーマンスの最適化作業やマスター スレーブ レプリケ...

シェルスクリプトを使用して CentOS7 に python3.8 環境をインストールする (推奨)

ワンクリック実行仮想マシンに Python 3.8 をインストールするには、ネットワーク アダプター...

Vueはシンプルなショッピングカートの例を実装します

この記事では、参考までに、Vue の具体的なコードを共有して、簡単なショッピングカートを実装します。...

MySQL でよく使用される SQL 文を表示する (詳細な説明)

#mysql -uroot -pパスワードを入力してくださいmysql> show full...

MySQL SQL ステートメントが遅い場合の一般的な原因と解決策

1. インデックス不足または無効なインデックスによるクエリの遅延数千万件のデータを含むテーブルで、イ...

Vue2.x と Vue3.x のルーティングフックの違いの詳細な説明

目次vue2.xプレコンセプト:ルーティングフックのカテゴリルーティングとコンポーネントの概念(フッ...