4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[docker] docker pull が途中で止まる時は "max-concurrent-downloads 1" を試してみよう

Last updated at Posted at 2020-03-27

概要

遅いインターネット回線で "docker pull" (docker build も同様)してたら途中で止まってしまった。タイムアウトなのか。遅い(重い)だけなのか。
Dockerの設定を変更して最大同時ダウンロード数(max-concurrent-downloads)を"1"にしたらうまくいった。

環境

Host OS: Windows 10 Home

  • "Docker Toolbox" でDockerを利用

Docker: version 19.03.1

$ docker --version
Docker version 19.03.1, build 74b1e89e8a

背景

自宅PCでDockerを使っていたが、ある事情で家のインターネット回線を解約しました。
仕方なく、格安SIM(楽天モバイル)のテザリングでネットに繋いでいるので回線が重い。

すると、(今までそんなことなかったのに) docker build 等のコマンドでネットからファイル取得中に進まなくなる現象が多発するようになりました。

現象

例えば以下のような感じで、ファイルのダウンロード中で止まってしまう。

$ docker pull php:7.4-fpm-alpine
7.4-fpm-alpine: Pulling from library/php
aad63a933944: Downloading [==========================>                        ]   1.51MB/2.803MB
b61c449d5d91: Download complete
3fde16e1397a: Download complete
b1096698ab2a: Download complete
1b7b3153bac8: Download complete
c25256547bec: Download complete
47e7fc912cc2: Download complete
7ad4a4e5e343: Download complete
1739f6256835: Download complete
40c44c56af3f: Download complete

いくら待っても、これ以上進まない。
数回試したが、止まるファイルやどこまで進んだかが一定ではない。

解決策

色々調べると "Docker daemon" の起動時オプションで以下を追加するとうまくいきそう。

--max-concurrent-downloads 1

("max-concurrent-downloads" オプションについては https://docs.docker.com/engine/reference/commandline/dockerd/ 参照)

Docker toolbox を使っている場合は、以下の手順で変更できるようだ。

docker-machineに接続

$ docker-machine ssh default

profileファイル編集

[docker@default]
docker@default: sudo vi /var/lib/boot2docker/profile
  # EXTRA_ARGS に "--max-concurrent-downloads 1" を追加する
docker@default: cat /var/lib/boot2docker/profile

EXTRA_ARGS='
--label provider=virtualbox
--max-concurrent-downloads 1
'
CACERT=/var/lib/boot2docker/ca.pem
DOCKER_HOST='-H tcp://0.0.0.0:2376'
DOCKER_STORAGE=overlay2
DOCKER_TLS=auto
SERVERKEY=/var/lib/boot2docker/server-key.pem
SERVERCERT=/var/lib/boot2docker/server.pem

docker@default: exit

docker-machine再起動

docker-machine restart default

(https://github.com/boot2docker/boot2docker#docker-daemon-options 参照)

結果

上記設定変更作業すると以下のようになった。

  • pull するファイルが3並列だったのが直列になった。
  • 途中で止まらなくなった。

まとめ

ネット接続が重い状態で docker pull が止まる場合、並列ダウンロードをやめると改善する場合がある。

4
3
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
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?