dockge icon indicating copy to clipboard operation
dockge copied to clipboard

Mac Address Parameter Ignored in Compose File

Open paulrobinsontkd opened this issue 2 years ago • 7 comments

⚠️ Please verify that this bug has NOT been reported before.

  • [X] I checked and didn't find similar issue

🛡️ Security Policy

Description

I am deploying a number of containers all of which have a static mac address assigned so that i can create firewall rules and allow access to various devices and internet.

The compose i am using is detailed as below

version: "3.8"
services:
  pihole0:
    container_name: pihole0
    build:
      context: /share/docker/build/pihole/
      dockerfile: /share/docker/build/pihole/Dockerfile
    image: mypihole/pihole-unbound:latest
    hostname: pihole0
    domainname: lan.prcomputers.co.uk
    mac_address: 02:42:df:bb:cf:e1
    ports:
      - 443:443/tcp
      - 53:53/tcp
      - 53:53/udp
      - 80:80/tcp
      - 2222:2222/tcp
      - 9167:9167/tcp
    environment:
      .....
    networks:
      qnet-static-eth4:
        ipv4_address: 
    volumes:
      - /share/docker/volumes/pihole0/config/pihole:/etc/pihole/
      - /share/docker/volumes/pihole0/config/dnsmasq.d:/etc/dnsmasq.d/
      - /share/docker/volumes/pihole0/config/gravity-sync/:/config/gravity-sync/
    restart: unless-stopped
networks:
  qnet-static-eth4:
    external: true

When i run an inspect on the container the mac address is different from that in the compose file

"NetworkID": "a4b2f965df64726ab956f048f258593f6561eb465030e441c6201df7c767dae7",
                    "EndpointID": "ecb2a0603762b97355671c7057712020b1c9a4685199df5aa3cea5f393761610",
                    "Gateway": "XXXXXXXXXX",
                    "IPAddress": "XXXXXXXXXX",
                    "IPPrefixLen": 24,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:a5:12:6b:d8",
                    "DriverOpts": null

If i restart the container the mac address changes but should remain static to what is set in compose file

                    "NetworkID": "a4b2f965df64726ab956f048f258593f6561eb465030e441c6201df7c767dae7",
                    "EndpointID": "32e43880c270bbd62eb09cf9c91dc77490f59846c388a70c3dada6019246c3d7",
                    "Gateway": "192.168.10.1",
                    "IPAddress": "192.168.10.200",
                    "IPPrefixLen": 24,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:4f:e1:3a:97",
                    "DriverOpts": null

This code was lifted from an existing deployment which worked without issue and kept the same mac address when i deployed directly with docker compose

👟 Reproduction steps

Created compose file with mac_address parameter Deployed container Checked mac_address with docker inspect pihole0

👀 Expected behavior

The mac address should remain static when specified in compose file and between docker restarts

😓 Actual Behavior

The mac address changes each time contain is restarted

Dockge Version

1.2.0

💻 Operating System and Arch

Linux qnap 5.10.60-qnap #1 SMP Tue Sep 26 01:46:28 CST 2023 x86_64 GNU/Linux

🌐 Browser

N/A

🐋 Docker Version

Docker version 20.10.22-qnap7, build 57ed8b8

🟩 NodeJS Version

Unknown

📝 Relevant log output

No errors given when deployed

paulrobinsontkd avatar Dec 11 '23 21:12 paulrobinsontkd

Realised i was not on latest version of Dockge v1.3.3

Deployed latest version of dockge from v1.2.0 and issue is no longer present and container keeps static mac address as per parameter.

paulrobinsontkd avatar Dec 11 '23 22:12 paulrobinsontkd

Tried again this morning and redeployed same container from Dockge and it was given a new mac address.

Deployed with compose directly from OS and it was given the correct mac address so something is still not right

paulrobinsontkd avatar Dec 12 '23 09:12 paulrobinsontkd

I think you should reconfirm this, because Dockge is just running a command "docker compose up -d" for you. Nothing special.

It could be a bug of docker compose v2.

louislam avatar Dec 12 '23 12:12 louislam

I have just created a new grafana container in Dockge and deployed using the following compose

version: "3.5"
services:
  grafana:
    image: grafana/grafana:latest
    container_name: grafana
    mac_address: 02:42:19:19:c3:c8
    ports:
      - 3000:3000
    networks:
      qnet-static-eth4:
        ipv4_address: XXXXXXXXXXXXXXXXXXX
    environment:
      - GF_SECURITY_ADMIN_USER=admin
      - GF_SECURITY_ADMIN_PASSWORD=XXXXXXXXXXXXX
    volumes:
      - data:/var/lib/grafana
      - config:/etc/grafana
    restart: unless-stopped
    labels:
      - com.centurylinklabs.watchtower.enable=true
networks:
  qnet-static-eth4:
    external: true
volumes:
  data:
    driver: local
    driver_opts:
      o: bind
      type: none
      device: /share/docker/volumes/grafana/data
  config:
    driver: local
    driver_opts:
      o: bind
      type: none
      device: /share/docker/volumes/grafana/config

When i run a docker inspect the mac address is not the same as the parameter specified

                    ],
                    "NetworkID": "a4b2f965df64726ab956f048f258593f6561eb465030e441c6201df7c767dae7",
                    "EndpointID": "6ab18cf070c5cf0ae7c255d570b09bf19f4d3f2df293a5b261ee48bac27b2a0d",
                    "Gateway": "192.168.10.1",
                    "IPAddress": "192.168.10.205",
                    "IPPrefixLen": 24,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    **"MacAddress": "02:42:ff:4b:ea:8c",**
                    "DriverOpts": null
                }
            }

If i then delete and recreate the container from the OS using the compose file generated by dockge i have no issues

[admin@qnap ~]# docker stop grafana
[admin@qnap ~]# docker rm grafana
[admin@qnap ~]# cd /share/docker/stacks/grafana
[admin@qnap grafana]# docker compose -f compose.yaml up -d
[+] Running 1/1
 ⠿ Container grafana  Started

[admin@qnap grafana]# docker inspect grafana

                    "NetworkID": "a4b2f965df64726ab956f048f258593f6561eb465030e441c6201df7c767dae7",
                    "EndpointID": "5aaec3e574af14fe06792b439b11e3a3c4df47139dbd1f806ee2ed115382fcd9",
                    "Gateway": "192.168.10.1",
                    "IPAddress": "192.168.10.205",
                    "IPPrefixLen": 24,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    **"MacAddress": "02:42:19:19:c3:c8",**
                    "DriverOpts": null
                }
            }
        }
    }
]

So something is not right for me when i deploy using Dockge as the mac_address is not being configured to what i use in compose file. I can deploy from OS and everything works correctly but it kind of defeats the object of me using Dockge

paulrobinsontkd avatar Dec 12 '23 12:12 paulrobinsontkd

Should be an upstream bug: https://github.com/docker/compose/issues/11041

What is your docker compose version on your host?

docker compose version

Edit: They said it has been fixed, but haven't release it yet. I will update it once they released the fixed.

At this moment, you should keep using your host's docker-compose and don't update it.

louislam avatar Dec 12 '23 12:12 louislam

[admin@qnap grafana]# docker compose version Docker Compose version v2.14.1-qnap1

paulrobinsontkd avatar Dec 12 '23 13:12 paulrobinsontkd

Yes, your version is older.

Dockge is using the newer version 2.21.0 which contains this bug.

We should wait until they released the bug fix.

louislam avatar Dec 12 '23 13:12 louislam