Skip to content

[BUG] --dry-run flag causes Compose commands to to fail on Synology with official Docker package #10766

@Renerick

Description

@Renerick

Description

When trying to run docker compose --dry-run up command I receive this error

$ sudo docker compose --dry-run up
invalid name , name needs to start with a letter and may not contain symbols, except ._-

Same file works normally without --dry-run

$ sudo docker compose up
[+] Running 0/1
 ⠹ db Pulling                  
The file
services:
  db:
    image: postgres
    volumes:
      - ./tmp/db:/var/lib/postgresql/data
    environment:
      POSTGRES_PASSWORD: password
  web:
    build: .
    command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
    volumes:
      - .:/myapp
    ports:
      - "3000:3000"
    depends_on:
      - db
 

The important nuance is that I run docker on Synology NAS from the official Container Manager package, so it's either the fact that Docker version is older than it should be, or some fundamental incompatibility of --dry-run with Synology DSM

The plugin is installed from release binary from this repo

Steps To Reproduce

  1. Acquire Synology NAS and install "Docker"/"Container Manager" package, as well as the Compose plugin
  2. Create a valid docker-compose.yml
  3. Try to run docker compose up, confirm that the file is valid
  4. Try to run docker compose --dry-run up, receive an error message

Compose Version

$ sudo docker compose version
Docker Compose version v2.19.1

Docker Environment

$ sudo docker info
Client:
 Context:    default
 Debug Mode: false
 Plugins:
  compose: Docker Compose (Docker Inc., v2.19.1)

Server:
 Containers: 5
  Running: 4
  Paused: 0
  Stopped: 1
 Images: 13
 Server Version: 20.10.23
 Storage Driver: btrfs
  Build Version: Btrfs v4.0
  Library Version: 101
 Logging Driver: db
 Cgroup Driver: cgroupfs
 Cgroup Version: 1
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs db 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: b23a389d8c181697302d163356e97dec04eb8d88
 runc version: 5af893d
 init version: ed96d00
 Security Options:
  apparmor
 Kernel Version: 4.4.302+
 Operating System: Synology NAS

 OSType: linux
 Architecture: x86_64
 CPUs: 4
 Total Memory: 3.678GiB
 Name: [REDACTED]
 ID: [REDACTED]
 Docker Root Dir: /volume1/@docker
 Debug Mode: false
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Live Restore Enabled: false

WARNING: No kernel memory TCP limit support
WARNING: No cpu cfs quota support
WARNING: No cpu cfs period support
WARNING: No blkio throttle.read_bps_device support
WARNING: No blkio throttle.write_bps_device support
WARNING: No blkio throttle.read_iops_device support
WARNING: No blkio throttle.write_iops_device support

Anything else?

The error message seems to come from here https://github.com/docker/buildx/blob/b84e0e11b4384d3f51e63fe71c4be7a9aad946df/store/util.go#L34

This appears very strange to me, especially considering that it works without dry-run, and I have no idea why this code path would fail. Even considering the uniqueness of my setup, I imagine that dry run would work mostly the same, right?

I haven't found this issue referenced anywhere on the Internet, so either my use case is rare, or the problem is in my setup somehow

Updating docker is not an option, since it comes from the official package. And since this error comes from the dependency, I can't see how it could help anyway

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions