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を再帰的に照会します

推薦する

Linuxシステムにおける仮想デバイスファイルのさまざまな実用的な使用法の詳細な説明

みなさんこんにちは。私は梁旭です。ご存知のとおり、Linux ではデバイス ファイルも含めすべてがフ...

ページ要素の絶対位置と相対位置に関するある程度の理解

今日から、定期的にちょっとした豆知識を整理していきます。簡単なものもあるかもしれませんが、どれも役に...

IDEA2021 tomcat10 サーブレットの新しいバージョンの落とし穴

私が学習していたときに使用していたバージョンは比較的新しいものであり、インターネット上のチュートリア...

Mysqlアカウント管理の原理と実装方法の詳細な説明

この記事では、例を使用して、MySQL アカウント管理の原則と実装方法を説明します。ご参考までに、詳...

HTML(divレイヤー)を介してFLASHにリンクを追加するための実装コード

今日、クライアントが広告を掲載したいのですが、提供された素材は Flash です。私たちはあまり気に...

Presto をインストールし、Docker で Hive を接続する詳細なプロセス

1. はじめにPresto は、ギガバイトからペタバイトに及ぶデータ ソースに対してインタラクティブ...

vue プロジェクトで rem を使用して px を置き換える例

目次道具プラグインをインストールするプロジェクトのルートディレクトリに.postcssrc.jsファ...

JavaScript におけるイベント委譲メカニズムと深いコピーと浅いコピーの簡単な分析

目次1. イベントの委任イベントバブリングイベントキャプチャイベントの泡立ちの昇華考える2. 深いコ...

CSS トランジションを使用した円形ホバー効果のサンプルコード

この記事では ソースコードのオンラインプレビューとダウンロード今日のチュートリアルでは、円のホバー効...

mysql はフィールドコンテンツの一部を置き換え、mysql は関数 replace() を置き換えます。

[mysql] replace の使用方法 (フィールドの内容の一部を置き換える) [mysql]...

JavaScript イベント委任の原則

目次1. イベント委任とは何ですか? 2. イベント委任の原則3. イベント委託の役割1. イベント...

HTMLページ作成に関する私の経験の簡単な要約

Word of Mouth に入社して 3 ~ 4 か月が経ちました。仕事の中で一番の収穫は、ビジュ...

MySQL MGR 構築時の一般的な問題と解決策

目次01 よくある故障 1 02 よくある欠陥 2 03 よくある欠陥 3 04 よくある欠陥 4 ...

nginxとバックエンドポート間の競合の解決策

質問: Alice 管理システムを開発しているときに、すべてのバックエンド インターフェイスが最初の...

MySQL をベースにしたシンプルな検索エンジンを実装する

目次MySQL ベースの検索エンジンの実装1. ngram全文パーサー2. 全文インデックスを作成す...