どうも、tobi462 です。
今日は docker-compose build
での apk update
時に以下のエラーが発生した時の対処メモです。
Step 7/11 : RUN apk update ---> Running in 45856361a825 fetch http://mirrors.aliyun.com/alpine/v3.4/main/x86_64/APKINDEX.tar.gz ERROR: http://mirrors.aliyun.com/alpine/v3.4/main: temporary error (try again later) WARNING: Ignoring APKINDEX.47c31cae.tar.gz: No such file or directory
Tl;Dr
Docker のバージョンを最新にしたら解決しました。
$ sudo apt-get install docker-ce $ docker -v Docker version 18.03.1-ce, build 9ee9f40
突然の死
Jenkins / Ubuntu 16.04 LTS にシステムを自動デプロイをしていたのですが、ある日からデプロイに成功しなくなりました。
そして Job のログを見ると以下のようなエラーが出ていました。
fetch http://mirrors.aliyun.com/alpine/v3.4/main/x86_64/APKINDEX.tar.gz ERROR: http://mirrors.aliyun.com/alpine/v3.4/main: temporary error (try again later) WARNING: Ignoring APKINDEX.47c31cae.tar.gz: No such file or directory
どうやら docker-compose build
時、何かをDLしようとしたときにエラーになっているようです。
その後、 RUN
コマンドを分解して実行したところ、 apk upate
で失敗していることがわかりました。
しかし、ローカル(Mac)で docker-compose build
しても成功します。
エラーメッセージでぐぐったらいろいろ情報が見つかったので、色々試してみました。
curl で DL できるか試してみる
URLが死んでいるのかと思い、まずは curl
でアクセスできるか試してみました。
$ curl -o x.tar.gz http://mirrors.aliyun.com/alpine/v3.4/main/x86_64/APKINDEX.tar.gz % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 663k 100 663k 0 0 1654k 0 --:--:-- --:--:-- --:--:-- 1654k
どうやらこれは問題ないようです。
ミラーリポジトリを試してみる
ググった中にミラーリポジトリを試してみると良い、という情報があったので試してみました。
どうやら alpine では /etc/apk/repositories
にパッケージマネージャ用のリポジトリURLが記載されているようです。
# cat /etc/apk/repositories http://dl-cdn.alpinelinux.org/alpine/v3.4/main http://dl-cdn.alpinelinux.org/alpine/v3.4/community
そこで Dockerfile
に RUN
コマンドを追加して、ミラーリポジトリを追記してみました。
RUN echo http://mirror.yandex.ru/mirrors/alpine/v3.5/main > /etc/apk/repositories; \ echo http://mirror.yandex.ru/mirrors/alpine/v3.5/community >> /etc/apk/repositories
残念ながらこの方法では解決しませんでした。
まぁ、 curl
で DL は出来ていたのであまり期待はしていませんでしたが。
IP v6 を有効にしてみる?
正直、これはあまり理解していなかったのですが、以下のように /etc/modules
に ipv6
を足してみたら解決したという記事があったので試してみました。
こういう時、Docker は環境を壊す心配をせずに試せるのでありがたい限りです。
RUN echo "ipv6" >> /etc/modules
まぁ、これも駄目だったのですが。
docker のバージョンアップ
そもそもなぜローカルのMacではビルドが成功するのだろう、と思って Docker のバージョンを調べてみました。
すると、ローカルでは 18.x
系だったのに、Ubuntu 16.04 LTS では 17.x
系でした。
なので試しに Ubuntu 上の Docker も最新にしてみることにしました。
$ sudo apt-get update $ sudo apt-get install docker-ce
実のところあまり期待していなかったのですが、これで解決しました。
おわり
ということでトラブル対処メモでした。役に立つ人もいるかもしれないので記事にしました。
今回のケースでは Docker のバージョンアップで解決しましたが、状況によって解決策は異なるかもしれません。