LoginSignup
16
9

More than 5 years have passed since last update.

CentOSでyumコマンドがCouldn't resolve hostエラーで使えなくなった時の対処方法

Posted at

概要

Windows版のDockerを使っていてCentOSのDockerイメージをビルドしようとしたときDockerfileに記載している yum install コマンドで以下のエラーが発生するようになりました。

Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=6&arch=x86_64&repo=os&infra=container error was
14: PYCURL ERROR 6 - "Couldn't resolve host 'mirrorlist.centos.org'"
Error: Cannot retrieve repository metadata (repomd.xml) for repository: base. Please verify its path and try again
ERROR: Service 'sample' failed to build: The command '/bin/sh -c yum install -y epel-release' returned a non-zero code: 1

Couldn't resolve host となっているので、どうやら名前解決ができていないようです。
DNSまわりの設定を見直せば解決するだろうと思っていましたが、少しはまったので対処方法をメモしておきます。
それにしても今までDockerイメージのビルドが普通にできていて突然エラーとなるのは謎です。

対象

  • Windows版のDockerを利用している。
  • ホストマシンがドメインに参加している。
  • CentOSのDockerイメージをビルドしている。
  • yum installでCouldn't resolve hostエラーになる。

試したこと

(1) インターフェース設定ファイルの更新

インターフェースファイル /etc/sysconfig/network-scripts/ifcfg-eth0ONBOOT=no になっていると通信ができないようなので ONBOOT=yes になるように設定してみます。

Dockerfile
sed -ri 's/ONBOOT=no/ONBOOT=yes/' /etc/sysconfig/network-scripts/ifcfg-eth0

結果
そもそもCentOSのDockerイメージにはインターフェースファイルが存在していませんでした。
今までDockerイメージのビルドはできていたのでこのファイルは関係ないようです。

(2) レゾルバ設定ファイルの更新

DNSがうまく参照できなくなった可能性もあるので、レゾルバ設定ファイルにGoogle Public DNSを設定してみます。

Dockerfile
echo 'nameserver 8.8.8.8' >> /etc/resolv.conf

結果
変わらず yum install コマンドでエラーになります。

(3) docker-compose.yml ファイルの更新

docker-composeを利用しているので docker-compose.yml ファイルからもGoogle Public DNSを設定してみます。

docker-compose.yml
services:
  sample:
    dns:
      - 8.8.8.8

結果
変わらず yum install コマンドでエラーになります。
(2)、(3)でDNSを設定しているにもかかわらず名前解決ができていないので、Dockerデーモン自体に問題があるようです。

(4) Docker デーモンの設定の更新

タスクトレイから Docker のアイコンを右クリックして Settings を開きます。
Daemon メニューをクリックしてDocker デーモンの設定を表示します。

daemon.png

BasicAdvanced に切り替えてから dns の設定を追加します。

"dns": [
  "8.8.8.8"
]

設定を追加したら Apply ボタンで適用します。
適用後は Reset メニューから Restart Docker... で Docker デーモンの再起動を行います。

結果
この設定変更で解決しました。
今までどおり yum install コマンドが使えるようになり、Dockerイメージのビルドが成功しました。

まとめ

ホストマシンがドメインに参加している場合、Dockerイメージのビルドで yum install が突然エラーになることがあります。その場合はDocker デーモンの設定からDNSを追加することで対処できます。

16
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
9