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

推薦する

TCP 3 回目のハンドシェイク データ転送プロセス図

RFC793 ドキュメントの SYN フラグを持つプロセス パケットはデータを伝送できません。つま...

フロントエンドの状態管理(パート 1)

目次1. フロントエンドの状態管理とは何ですか? 2. ヴュークス3. バス4. ウェブストレージ序...

Vueはキャンバスを使用して画像圧縮アップロードを実現します

この記事では、キャンバスを使用して画像圧縮アップロードを実現するVueの具体的なコードを参考までに共...

CSS の position 属性の値に関する研究 (概要)

CSS の位​​置属性は要素の配置タイプを指定し、上、下、左、右を使用して要素を具体的に配置します...

Docker コンテナの uid と gid の詳細な理解

デフォルトでは、コンテナ内のプロセスは root ユーザー権限で実行され、この root ユーザーは...

git bash を使用して Linux にログインするための ssh の設定方法

1. まず、Linux サーバー上で公開鍵ファイルと秘密鍵ファイルを生成します。デフォルトの保存ディ...

Nginx+Keepalived でデュアルマシン マスターとバックアップを実装する方法

序文まず、高性能サーバーの高可用性またはホットスタンバイソリューションである Keepalived ...

CSS XTHML の記述標準とよくある問題の概要 (ページ最適化)

プロジェクトドキュメントディレクトリDiv+CSS 命名規則 - 4 - Div+css 命名規則 ...

Vue で Openlayer を使用して読み込みアニメーション効果を実現する

注意: スコープアニメーションは使用できません。 ! ! ! GIF経由 <テンプレート>...

Dockerイメージ作成の完全なプロセス

目次序文作成手順CentOSベースイメージを作成するコンテナを作成してカスタマイズするカスタムコンテ...

クエリでのMySQLのユニークキーの使用と関連する問題

1. テーブルステートメントを作成します。 テーブル「従業員」を作成します( `emp_no` in...

vue-router 4 の使用例の詳しい説明

目次1. インスタンスをインストールして作成する2. vue-router4の新機能2.1 動的ルー...

MySQL ソートの原則とケース分析

序文ソートはデータベースの基本的な機能であり、MySQL も例外ではありません。ユーザーは、Orde...

Docker - コンテナマウントディレクトリを変更する3つの方法のまとめ

方法 1: 設定ファイルを変更する (docker サービスを停止する必要があります) 1. doc...

jsのイベントループ機構の解析

序文ご存知のとおり、JavaScript は本質的にシングルスレッドですが、ブラウザは非同期リクエス...