docker runのタイミングでdockerfileのコマンドがエラーになってしまうことで処理が止まる問題を一時的に回避する

Dockerエラー解消
docker runのタイミングでdockerfileのコマンドがエラーになってしまうことで処理が止まる問題を一時的に回避する
Memo
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

docker runのタイミングでDockerfileのコマンドがエラーになってしまうことで処理が止まる問題を一時的に回避するための対応をメモしました。

エラーが発生した経緯

apt-getmysql-clinetをインストールしたかったのだが
その場合apt-get updateを実施する必要があり
一部のパッケージのリクエスト先が404となってエラーになってしまうため
このエラーを回避したかったことがきっかけになります。

Dockerfile

Dockerfile
FROM java:8-jre RUN apt-get update -y; RUN apt-get install mysql-client -y

発生したエラー

docker build実行時にエラーになります。

実行ログ

docker buildコマンドを実行したログになります。

$ docker build -t hoge .
Sending build context to Docker daemon  2.048kB
Step 1/3 : FROM java:8-jre
 ---> e44d62cf8862
Step 2/3 : RUN apt-get update -y;
 ---> Running in 23a23621a47c
Get:1 http://security.debian.org jessie/updates InRelease [44.9 kB]
Ign http://deb.debian.org jessie InRelease
Get:2 http://deb.debian.org jessie-updates InRelease [16.3 kB]
Ign http://deb.debian.org jessie-backports InRelease
Get:3 http://deb.debian.org jessie Release.gpg [1652 B]
Ign http://deb.debian.org jessie-backports Release.gpg
Get:4 http://deb.debian.org jessie Release [77.3 kB]
Ign http://deb.debian.org jessie-backports Release
Err http://deb.debian.org jessie-backports/main amd64 Packages

Get:5 http://security.debian.org jessie/updates/main amd64 Packages [992 kB]
Get:6 http://deb.debian.org jessie-updates/main amd64 Packages [20 B]
Get:7 http://deb.debian.org jessie/main amd64 Packages [9098 kB]
Err http://deb.debian.org jessie-backports/main amd64 Packages

Err http://deb.debian.org jessie-backports/main amd64 Packages
  404  Not Found
Fetched 10.2 MB in 8s (1213 kB/s)
W: There is no public key available for the following key IDs:
AA8E81B4331F7F50
W: Failed to fetch http://deb.debian.org/debian/dists/jessie-backports/main/binary-amd64/Packages  404  Not Found

E: Some index files failed to download. They have been ignored, or old ones used instead.

エラーについて

jessie-backports/main amd64 Packagesを取得しに行った際に deb.debian.orgが404となっているためステータスコードがエラーになり
処理が停止しています。

解決手順

暫定ですが一時的にステータスコード 0を返して処理の停止を回避しています。

Dockerfile

Dockerfile
FROM java:8-jre RUN apt-get update -y; exit 0; RUN apt-get install mysql-client -y

実行ログ

修正したDockerfileで再度docker buildコマンドを実行したログになります。

$ docker build -t hoge .
Sending build context to Docker daemon  2.048kB
Step 1/3 : FROM java:8-jre
 ---> e44d62cf8862
Step 2/3 : RUN apt-get update -y; exit 0;
 ---> Running in ae8c71111846
Get:1 http://security.debian.org jessie/updates InRelease [44.9 kB]
Ign http://deb.debian.org jessie InRelease
Get:2 http://deb.debian.org jessie-updates InRelease [16.3 kB]
Ign http://deb.debian.org jessie-backports InRelease
Get:3 http://deb.debian.org jessie Release.gpg [1652 B]
Ign http://deb.debian.org jessie-backports Release.gpg
Get:4 http://deb.debian.org jessie Release [77.3 kB]
Ign http://deb.debian.org jessie-backports Release
Err http://deb.debian.org jessie-backports/main amd64 Packages

Err http://deb.debian.org jessie-backports/main amd64 Packages

Err http://deb.debian.org jessie-backports/main amd64 Packages

Err http://deb.debian.org jessie-backports/main amd64 Packages

Err http://deb.debian.org jessie-backports/main amd64 Packages
  404  Not Found
Get:5 http://security.debian.org jessie/updates/main amd64 Packages [992 kB]
Get:6 http://deb.debian.org jessie-updates/main amd64 Packages [20 B]
Get:7 http://deb.debian.org jessie/main amd64 Packages [9098 kB]
W: There is no public key available for the following key IDs:
AA8E81B4331F7F50
W: Failed to fetch http://deb.debian.org/debian/dists/jessie-backports/main/binary-amd64/Packages  404  Not Found

E: Some index files failed to download. They have been ignored, or old ones used instead.
Fetched 10.2 MB in 13s (732 kB/s)
Removing intermediate container ae8c71111846
 ---> 28ae927cbccd
Step 3/3 : RUN apt-get install mysql-client -y
 ---> Running in bc18b00d9c52

暫定ですがエラーは回避することができました。

恒久対応

根本的な解決はパッケージを正しく取得することで
DNSのあたり設定に問題があると思っているため引き続きこちらについては調査していきたいと思います。

終わりに

最後までご覧いただきありがとうございます。
この記事ではdocker runのタイミングでdockerfileのコマンドがエラーになってしまうことで処理が止まる問題を一時的に回避するについて紹介させていただきました。

これからも皆様の開発に役立つ情報を提供していきたいと考えています。
今後ともよろしくお願いいたします。