とある環境を用意したいので、ubuntuのdockerコンテナを作成。
Dockerfileに記述して、ビルド
すると、エラーが発生。
$ docker-compose build
........
省略
........
#0 166.6 Ign:7 http://ports.ubuntu.com/ubuntu-ports focal/universe arm64 Packages
#0 226.7 Ign:7 http://ports.ubuntu.com/ubuntu-ports focal/universe arm64 Packages
#0 286.7 Ign:7 http://ports.ubuntu.com/ubuntu-ports focal/universe arm64 Packages
#0 287.3 Ign:7 http://ports.ubuntu.com/ubuntu-ports focal/universe arm64 Packages
#0 287.6 Err:7 http://ports.ubuntu.com/ubuntu-ports focal/universe arm64 Packages
#0 287.6 Connection failed [IP: 185.125.190.36 80]
#0 287.7 Fetched 9407 kB in 4min 47s (32.7 kB/s)
#0 287.7 Reading package lists...
#0 287.8 E: Failed to fetch http://ports.ubuntu.com/ubuntu-ports/dists/focal/universe/binary-arm64/Packages Connection failed [IP: 185.125.190.36 80]
#0 287.8 E: Some index files failed to download. They have been ignored, or old ones used instead.
なにやら、アップデート時にパッケージへの接続ができないという。
インストールしようとしているのは、ubuntu20.04のため、まだサポートは切れていない。
とりあえず、キャッシュを利用しないようにビルドしてみることに。
docker-compose build --no-cache
NG
調べてみると、Docker Diskの空き容量が不足してもエラーとなるとか。
しかし、こちらも関係なし。
リポジトリをミラーに変更してみると良いとか。
RUN sed -i.org -e 's|archive.ubuntu.com|ubuntutym.u-toyama.ac.jp|g' /etc/apt/sources.list
RUN apt-get clean
こうちらも効果なし。(エラーとなる)
いろいろと調べて諦めかけていると、
通信速度が原因で失敗することもあるとか。
そこで、次のタイムアウト設定をDocerfileに追記してみることに。
RUN /bin/echo -e "Acquire::http::Timeout \"300\";\n\
Acquire::ftp::Timeout \"300\";" >> /etc/apt/apt.conf.d/timeout_setting
無事にupdate完了しました。
docker コンテナは一度作成すると開発に専念するので、なかなか繰り返し触らないので、忘れないようにしないと。