最近、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
これに関してご助力いただければ幸いです。