docker / for-mac

Bug reports for Docker Desktop for Mac
https://www.docker.com/products/docker#/mac
2.43k stars 116 forks source link

Docker Desktop doesn't limit log sizing #7348

Open Stealthii opened 1 month ago

Stealthii commented 1 month ago

Description

The electron app logs issues encountered with running containers, however there is no max size to the total number of logs generated.

Whilst they roll over into a new log file at 20MB in size, I've had almost 70GiB of logs accumulate over the past 3 days (5th-8th).

Reproduce

  1. Run a container with some unsupported feature such as amd64 images under Rosetta on Arm Mac #6265
  2. Observe large log rollover of 20MB into hundreds of files

Expected behavior

Docker Desktop should by default have a max size associated with logging for the Electron app.

docker version

Client:
 Version:           27.0.3
 API version:       1.46
 Go version:        go1.21.11
 Git commit:        7d4bcd8
 Built:             Fri Jun 28 23:59:41 2024
 OS/Arch:           darwin/arm64
 Context:           desktop-linux

Server: Docker Desktop 4.32.0 (157355)
 Engine:
  Version:          27.0.3
  API version:      1.46 (minimum version 1.24)
  Go version:       go1.21.11
  Git commit:       662f78c
  Built:            Sat Jun 29 00:02:44 2024
  OS/Arch:          linux/arm64
  Experimental:     false
 containerd:
  Version:          1.7.18
  GitCommit:        ae71819c4f5e67bb4d5ae76a6b735f29cc25774e
 runc:
  Version:          1.7.18
  GitCommit:        v1.1.13-0-g58aa920
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

docker info

Client:
 Version:    27.0.3
 Context:    desktop-linux
 Debug Mode: false
 Plugins:
  buildx: Docker Buildx (Docker Inc.)
    Version:  v0.15.1-desktop.1
    Path:     /Users/dporter/.docker/cli-plugins/docker-buildx
  compose: Docker Compose (Docker Inc.)
    Version:  v2.28.1-desktop.1
    Path:     /Users/dporter/.docker/cli-plugins/docker-compose
  debug: Get a shell into any image or container (Docker Inc.)
    Version:  0.0.32
    Path:     /Users/dporter/.docker/cli-plugins/docker-debug
  desktop: Docker Desktop commands (Alpha) (Docker Inc.)
    Version:  v0.0.14
    Path:     /Users/dporter/.docker/cli-plugins/docker-desktop
  dev: Docker Dev Environments (Docker Inc.)
    Version:  v0.1.2
    Path:     /Users/dporter/.docker/cli-plugins/docker-dev
  extension: Manages Docker extensions (Docker Inc.)
    Version:  v0.2.25
    Path:     /Users/dporter/.docker/cli-plugins/docker-extension
  feedback: Provide feedback, right in your terminal! (Docker Inc.)
    Version:  v1.0.5
    Path:     /Users/dporter/.docker/cli-plugins/docker-feedback
  init: Creates Docker-related starter files for your project (Docker Inc.)
    Version:  v1.3.0
    Path:     /Users/dporter/.docker/cli-plugins/docker-init
  sbom: View the packaged-based Software Bill Of Materials (SBOM) for an image (Anchore Inc.)
    Version:  0.6.0
    Path:     /Users/dporter/.docker/cli-plugins/docker-sbom
  scout: Docker Scout (Docker Inc.)
    Version:  v1.10.0
    Path:     /Users/dporter/.docker/cli-plugins/docker-scout

Server:
 Containers: 0
  Running: 0
  Paused: 0
  Stopped: 0
 Images: 43
 Server Version: 27.0.3
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Using metacopy: false
  Native Overlay Diff: true
  userxattr: false
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Cgroup Version: 2
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local splunk syslog
 Swarm: inactive
 Runtimes: runc io.containerd.runc.v2
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: ae71819c4f5e67bb4d5ae76a6b735f29cc25774e
 runc version: v1.1.13-0-g58aa920
 init version: de40ad0
 Security Options:
  seccomp
   Profile: unconfined
  cgroupns
 Kernel Version: 6.6.32-linuxkit
 Operating System: Docker Desktop
 OSType: linux
 Architecture: aarch64
 CPUs: 8
 Total Memory: 3.831GiB
 Name: docker-desktop
 ID: d6394c82-2642-4f03-933f-738b19620cad
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 HTTP Proxy: http.docker.internal:3128
 HTTPS Proxy: http.docker.internal:3128
 No Proxy: hubproxy.docker.internal
 Labels:
  com.docker.desktop.address=unix:///Users/dporter/Library/Containers/com.docker.docker/Data/docker-cli.sock
 Experimental: false
 Insecure Registries:
  hubproxy.docker.internal:5555
  127.0.0.0/8
 Live Restore Enabled: false

WARNING: daemon is not using the default seccomp profile

Diagnostics ID

97B678FB-54D1-423B-8723-4C2C8557A080/20240709194122

Additional Info

A 3 line snippet of the log message:

2024-07-07T15:39:08.868Z error  Unhandled uncaught exception : { message: 'write EPIPE', errno: -32, code: 'EPIPE', syscall: 'write' }
2024-07-07T15:39:08.868Z error  Unhandled uncaught exception : { message: 'write EPIPE', errno: -32, code: 'EPIPE', syscall: 'write' }
2024-07-07T15:39:08.869Z error  Unhandled uncaught exception : { message: 'write EPIPE', errno: -32, code: 'EPIPE', syscall: 'write' }

Log file location:

❯ pwd
/Users/dporter/Library/Containers/com.docker.docker/Data/log
❯ du -sh *
 67G    host
214M    vm
radarsh commented 1 month ago

Can confirm that I have the exact issue. Using the same build of Docker for Mac and in my case the disc usage was almost 250GB and most of the files were created on or after July 7th.

trungutt commented 1 month ago

Hey @radarsh @Stealthii I'm assuming you're using Mac M1, could you please try out this build to see if the issue still persists?

https://desktop-stage.docker.com/mac/main/arm64/159051/Docker.dmg

Sorry for any inconvenience btw

radarsh commented 1 month ago

@trungutt I am using Mac M1. But strangely I haven't had this issue occur again since I deleted the electron log files. Maybe I haven't done the same steps that reproduced this issue in the first place.

Let me try to use this build but it might be tricky due to enterprise firewall restrictions at my work.

trungutt commented 1 month ago

@radarsh Thanks for the update. Next time I'd like to know how to reproduce it locally (if possible, having a minimal reproduction always helps, I'm aware it isn't easy most of the time).

You could still try the above build which is supposed to rotate logs correctly. Please let me know if logs continue to be accumulated in similar way.

Stealthii commented 2 weeks ago

@trungutt thanks for the build. Since reporting, I've been unable to replicate the issue that resulted in log floods in the first place. I've set up a watcher to see if this occurs again and will report back if the log rotation changes alleviate the logsize problem!