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

推薦する

Web開発で使用される基本的な概念と技術の紹介

本日は、Web 開発で使われる基本的な概念と技術を初心者向けに紹介します。A から Z まで合計 2...

MySQL の一般的なログの概要

序文: MySQL システムには、さまざまな種類のログが存在します。さまざまなログにはそれぞれ独自の...

MySQL で準備、実行、割り当て解除ステートメントを使用するチュートリアル

序文MySQLでは、準備、実行、割り当て解除を正式にはPREPARE STATEMENTと呼びます。...

Linux環境にRedisをデプロイし、Dockerにインストールする方法

インストール手順1. Redisをインストールするdocker search redis和docke...

MySQLがOracleのnvlと同様の機能を持つことができるかどうかについての簡単な議論

isnullの代わりにifnullを使用するisnull は、null かどうかを判断するために使用...

MySQLデータベースが予期せずクラッシュし、テーブルデータファイルが破損して起動できなくなる問題を解決します。

問題: MySQL データベースが予期せずクラッシュしたため、データベースを起動できませんでした。エ...

デザイン理論:人間中心のグリーンデザイン

「人間中心」と「グリーンデザイン」という2つの視点から考える——デザイン業界の同僚とも議論する2つの...

HTMLはシンプルで美しいログインページを作成します

まずは見てみましょう。 HTML ソースコード: XML/HTML コードコンテンツをクリップボード...

MySQL 8.0.12 クイックインストールチュートリアル

MySQL 8.0.12 のインストールには 2 日かかり、さまざまな問題が発生しました。以下にまと...

MySQLデータベースは重複データを削除し、メソッドインスタンスを1つだけ保持します

1. 問題の紹介ユーザー テーブルに 3 つのフィールドが含まれているシナリオを想定します。 id、...

Ubuntu 18.04 Server バージョンのインストールと使用方法 (画像とテキスト)

1 システムのインストール手順OSバージョン:1804イメージのダウンロード: http://cd...

HTMLテーブルで、各セルに異なる色と幅を設定します

設定が有効にならない場合が多いため、幅や高さなどをテーブル内で直接設定しないことをお勧めします。スタ...

MySQL エラー「すべての派生テーブルには独自のエイリアスが必要です」の解決方法

MySQL は、マルチテーブルクエリを実行するときにエラーを報告します。 [SQL] SELECT ...

JavaScript の document.activeELement フォーカス要素の紹介

目次1. デフォルトの焦点はボディにあります2. テキストボックスのフォーカスを手動で取得する3. ...

docker compose helloworld を使い始めるための詳細なプロセス

前提条件Compose は、Docker コンテナをオーケストレーションするためのツールです。Doc...