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

推薦する

MySQL の基本クイックスタート知識のまとめ (マインドマップ付き)

目次序文1. データベースの基礎知識1. データベースとは何ですか? 2. データベースの分類3. ...

HTML フレームセットのサンプルコード

この記事では、Frameset が作成した、できるだけシンプルなフレームワークを紹介します。さて、ま...

CSSは固定比率のブロックレベルコンテナを簡単に実装できる

H5 レイアウトを設計する場合、通常はバナーに遭遇することになります。例えば、2:1 で表示したい場...

MySQL グループ化クエリと集計関数

概要私たちは、双十一に天猫で化粧品を購入する人の平均支出額を知りたい(商品の価格帯を見つけるのに役立...

MySQL 半同期レプリケーションの原理構成と導入の詳細な説明

環境の紹介: Ubuntu Server 16.04.2+MySQL 5.7.17 コミュニティ サ...

mysql のインデックスと FROM_UNIXTIME に関する問題

ゼロ、背景今週の木曜日にたくさんのアラートを受け取りました。DBA に確認を依頼したところ、遅いクエ...

MySQL 5.7.33 インストール プロセスの詳細な図解

目次インストールパッケージのダウンロードインストール環境変数の設定インストールが成功したか確認する記...

Datagrip2020 が MySQL ドライバーのダウンロードに失敗する

「downloadlaod」を直接クリックしてもダウンロードできない場合は、ここからダウンロードす...

MySQL データベース開発の 36 の原則 (要約)

序文これらの原則は実際の戦闘から要約されています。あらゆる原則の背後には血なまぐさい教訓があるこれら...

Dockerコンテナがホストポートにアクセスできない場合の解決策

最近、仕事中に問題が発生しました。Docker コンテナがホストの redis にアクセスできず、t...

Div CSS 命名標準 CSS クラスの命名規則 (SEO 標準に準拠)

検索エンジン最適化 (SEO) では実行すべきタスクが多数ありますが、その中でもコードの最適化は重要...

Vue が Bibibili のホームページを模倣する際の問題

エンジニアリング構造プロジェクトは2つの部分に分かれています。bilibili-apiはAPIインタ...

テーブルはセルとimg画像を結合してtd HTML全体を埋めます

ソースコード(一部のクラスは削除されています):コードをコピーコードは次のとおりです。 <テー...

Nexus を使用して Docker リポジトリを作成する方法

公式の Docker レジストリを使用して作成されたウェアハウスでは、イメージを削除してもデフォルト...

nginxディレクトリパスをリダイレクトする方法

ドメイン名に続くパスがデフォルトの Web ディレクトリではなく、ローカル ディスク上の他のディレク...