EC2 ホストでの Docker 実行が遅くなる

EC2 ホストでの Docker 実行が遅くなる

最近、GitLab パイプラインで CI/CD を実行するための Terraspace ツールを実行するための Docker イメージを作成しました。ruby:3.0.2-alpine参考までに、コンテナーはアップストリームに使用します。

私たちが直面している問題は、EC2 (m5.large) で実行すると非常に遅くなることです。ここでは、docker イメージ内でツールを実行する場合とホスト上でネイティブに実行する場合に発生するタイミングをいくつか示します。docker タイミングは、イメージがダウンロードされた後にイメージ内で実行されます。

EC2 ドッカー EC2 ローカルDocker 地元
実時間 5分33秒403 実数 0分44秒799 実数 1分40秒842 実数 0分39秒626
ユーザー 0m11.150s ユーザー 0m26.531s ユーザー 0m24.736s ユーザー 0m10.913s
システム 0分1.437秒 システム 0分3秒276秒 システム 0分13.846秒 システム0m4.580

docker 内での実行速度が遅いのは、標準の terraspace イメージでも同様ですboltops/terraspace

実行中にホスト上に十分なリソースが残っているため、リソース使用の問題ではないようです。

CONTAINER ID   NAME            CPU %     MEM USAGE / LIMIT    MEM %     NET I/O          BLOCK I/O     PIDS
9b05765250b8   quirky_spence   0.54%     1.21GiB / 7.583GiB   15.95%    300MB / 3.43MB   0B / 1.08MB   3

Docker マシンの情報は次のとおりです。

lient:
 Context:    default
 Debug Mode: false

Server:
 Containers: 4
  Running: 0
  Paused: 0
  Stopped: 4
 Images: 3
 Server Version: 20.10.4
 Storage Driver: overlay2
  Backing Filesystem: xfs
  Supports d_type: true
  Native Overlay Diff: true
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Cgroup Version: 1
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: d71fcd7d8303cbf684402823e425e9dd2e99285d
 runc version: %runc_commit
 init version: de40ad0
 Security Options:
  seccomp
   Profile: default
 Kernel Version: 4.14.238-182.422.amzn2.x86_64
 Operating System: Amazon Linux 2
 OSType: linux
 Architecture: x86_64
 CPUs: 2
 Total Memory: 7.583GiB
 Name: ip-10-0-4-227
 ID: FUYW:PCXQ:5ZFW:4SMP:YIG4:RNBH:HCMH:6R53:NHS2:HTJO:VAKM:5QFB
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Registry Mirrors:
  https://docker-proxy/
 Live Restore Enabled: false

これに関してご助力いただければ幸いです。

関連情報