feste MAC für bestehenden Container nachträglich setzen

  • Hallo,


    wie kann ich für einen bestehenden Container (über die Konsole, da im Webinterface nicht vorgesehen) eine feste MAC-Adresse vergeben?


    Mich stört es, dass bei jedem Containerneustart eine neue MAC vergeben wird.

    Beim Neueinrichten kann man das angeben, nachträglich aber anscheinend nicht mehr so einfach ändern.

    Letztendlich ist das vermutlich nur ein weiterer Parameter beim Docker run-Kommando.

    Aber wo kann kann ich das manuell hinterlegen?

    Tschau

    Uwe

  • Hallo meMySelf,


    das Kommando kenne ich. Wo muss ich das hinzufügen?


    Tschau

    Uwe

  • Im "run Kommando" beim erstellen des Containers wird dieser verwendet

    Einmal editiert, zuletzt von meMyself ()

  • Hallo meMyself,


    Sorry, aber liest Du auch, worauf Du antwortest?

    Ich möchte das bei einem BESTEHENDEN Container ändern und suche die dafür zuständige Konfigurationsdatei.


    Tschau

    Uwe

  • Letztendlich ist das vermutlich nur ein weiterer Parameter beim Docker run-Kommando.

    Aber wo kann kann ich das manuell hinterlegen?

    ja, meistens lese ich worauf ich antworte, womöglich verwendest Du den Ausdruck "run-Kommando" aber auch mißverständlich falls du einen Entrypoint meinen solltest.


    By the way ... hast Du denn schon einmal das --mac-address Kommando beim Erstellen eines Containers verwendet um zu verifizieren ob der Container seine Mac-Adresse nach dem Neustart behält? (ich selbst habe das bisher nicht ausprobiert).

  • Hallo,


    Nein, habe ich noch nicht probiert. Soweit ich mich erinnere, kann man die MAC aber im Web-GUI beim Erstellen festlegen.

    Es braucht dazu keine Kommandozeilenakrobatik.


    Tschau

    Uwe

  • Ja, das stimmt ... wie gesagt hattest Du nach einem "run-Kommando" gefragt und ich versuchte zu unterstützen, was ganz offensichtlich nicht auf dein wohlwollen trifft, seis drum ...

  • Liest wie aneinander vorbei geredet ;)


    Nachträglich ändern ist etwas hakelig geht aber

    1.) Container stoppen

    2.) Constainer Station auch stoppn (wichtig sonnt wird die folgende änderung überschrieben)

    3.) hostconfig.json des Containers entsprechend bearbeiten

    4.) Conatiner Station und Container selbst starten

  • mag sein dass wir schön aneinander vorbeigeredet haben ;)


    wenn das neue Erstellen eines Containers per run-Befehl allerdings bereits als "Kommandozeilenakrobatik" bezeichnet wird, wie wird dann wohl die Antwort beim Vorschlag zum Patchen der hostconfig.json ausfallen? :S


    By the way, finde ich den Tip gut, da hätte ich gar nicht nachgeschaut :thumbup:8)

  • Hallo zerina,


    werde ich probieren. Danke für die Info.


    Tschai

    Uwe

  • Hallo zerina,


    der Parameter "MacAddress":"xx:xx:xx:xx:xx:xx" in der Datei config.v2.json scheint nur die zur Laufzeit des Containers verwendete MAC zu speichern. Wird der Container beendet, steht dort: "MacAddress":""

    Eine dort im gestoppten Zustand eingetragene MAC wird beim Start sofort wieder durch eine neue, zufällige MAC überschrieben.

    Es muss also eine andere Stelle geben, wo man die MAC voreinstellen kann...


    Tschau

    Uwe

  • Hi Uwe,

    ich habe jetzt testweise einen container mit fixer MAC erstellt und schließend die MAC geändert.

    ich habe die MAC nun sowohl in der config.v2.json als auch in der qnap.json geändert, ich hänge mal bei datein mit rein, ggfs ist noch ein weiterer Parameter notwendig, im Fall der variablen MAC fehlt bzw. anders gestetzt ist.


    config.v2.json

    Code
    {"StreamConfig":{},"State":{"Running":false,"Paused":false,"Restarting":false,"OOMKilled":false,"RemovalInProgress":false,"Dead":false,"Pid":0,"ExitCode":0,"Error":"","StartedAt":"2018-11-01T20:43:08.00275663Z","FinishedAt":"2018-11-01T20:44:21.970185721Z","Health":null},"ID":"2b2e08a725a9c2264e6e9eb1e28b18a17a51d234754cc5aa435a62ef75c8c90f","Created":"2018-11-01T20:43:03.843762044Z","Managed":false,"Path":"docker-entrypoint.sh","Args":["mysqld"],"Config":{"Hostname":"test1","Domainname":"","User":"","AttachStdin":false,"AttachStdout":false,"AttachStderr":false,"ExposedPorts":{"3306/tcp":{}},"Tty":true,"OpenStdin":true,"StdinOnce":false,"Env":["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin","GOSU_VERSION=1.7","MYSQL_MAJOR=5.7","MYSQL_VERSION=5.7.20-1debian8","MYSQL_RANDOM_ROOT_PASSWORD=yes"],"Cmd":["mysqld"],"ArgsEscaped":true,"Image":"terrychu/mysql:5.7.20","Volumes":{"/var/lib/mysql":{}},"WorkingDir":"","Entrypoint":["docker-entrypoint.sh"],"MacAddress":"02:42:1C:5A:D9:89","OnBuild":null,"Labels":{"com.qnap.qcs.network.mode":"bridge","com.qnap.qcs.version":""}},"Image":"sha256:d44c99eccb824b954c0de754b8b5fe55033ca1ea60c2e164da6b7ea5239309f5","NetworkSettings":{"Bridge":"","SandboxID":"b13f84766e4496af74f0521ecffbbd2cd58b4c58d48b6ff8bfff94b45273b423","HairpinMode":false,"LinkLocalIPv6Address":"","LinkLocalIPv6PrefixLen":0,"Networks":{"qnet-static-eth0-b03c93":{"IPAMConfig":{"IPv4Address":"192.168.178.21"},"Links":null,"Aliases":["2b2e08a725a9"],"NetworkID":"bd73dfc982bf806ee36c4ee621a289603bc526f1f0fc117dad53c7a597751186","EndpointID":"","Gateway":"","IPAddress":"","IPPrefixLen":0,"IPv6Gateway":"","GlobalIPv6Address":"","GlobalIPv6PrefixLen":0,"MacAddress":"","DriverOpts":null,"IPAMOperational":false}},"Service":null,"Ports":null,"SandboxKey":"/var/run/docker/netns/b13f84766e44","SecondaryIPAddresses":null,"SecondaryIPv6Addresses":null,"IsAnonymousEndpoint":false,"HasSwarmEndpoint":false},"LogPath":"/share/CACHEDEV1_DATA/Container/container-station-data/lib/docker/containers/2b2e08a725a9c2264e6e9eb1e28b18a17a51d234754cc5aa435a62ef75c8c90f/2b2e08a725a9c2264e6e9eb1e28b18a17a51d234754cc5aa435a62ef75c8c90f-json.log","Name":"/mysql-1","Driver":"overlay","Platform":"linux","MountLabel":"","ProcessLabel":"","RestartCount":0,"HasBeenStartedBefore":true,"HasBeenManuallyStopped":true,"MountPoints":{"/var/lib/mysql":{"Source":"","Destination":"/var/lib/mysql","RW":true,"Name":"038ecfc3a7703b7f14ce4ce2543d6b6231d59514af9b4f3113a0f45a23b3ad53","Driver":"local","Type":"volume","Spec":{}}},"SecretReferences":null,"ConfigReferences":null,"AppArmorProfile":"","HostnamePath":"/share/CACHEDEV1_DATA/Container/container-station-data/lib/docker/containers/2b2e08a725a9c2264e6e9eb1e28b18a17a51d234754cc5aa435a62ef75c8c90f/hostname","HostsPath":"/share/CACHEDEV1_DATA/Container/container-station-data/lib/docker/containers/2b2e08a725a9c2264e6e9eb1e28b18a17a51d234754cc5aa435a62ef75c8c90f/hosts","ShmPath":"/share/CACHEDEV1_DATA/Container/container-station-data/lib/docker/containers/2b2e08a725a9c2264e6e9eb1e28b18a17a51d234754cc5aa435a62ef75c8c90f/shm","ResolvConfPath":"/share/CACHEDEV1_DATA/Container/container-station-data/lib/docker/containers/2b2e08a725a9c2264e6e9eb1e28b18a17a51d234754cc5aa435a62ef75c8c90f/resolv.conf","SeccompProfile":"","NoNewPrivileges":false}

    qnap.json

    Code
    {"environment": [], "resource": {"device": [], "limit": {}}, "network": {"bridge": {"interface": {"bridge": "br0", "name": "eth0", "ip": "192.168.178.18", "gateway": "192.168.178.1", "netmask": "255.255.255.0", "display": "Adapter 1 (Virtual Switch 3)"}, "ip": [192, 168, 178, 21], "netmask": [255, 255, 255, 0], "mode": "static", "gateway": [192, 168, 178, 1]}, "mode": "bridge", "hostname": "test1", "mac_addr": "02:42:1C:5A:D9:89", "port": []}, "links": {}, "arch": "amd64", "image": "terrychu/mysql", "command": "", "volume": {"new": [], "host": {}, "container": []}, "working_dir": "", "version": "5.7.20", "entrypoint": "", "user": "", "autostart": true, "gpu": false, "type": "docker", "privileged": false, "name": "mysql-1"}

    EDIT

    Gerade nochmal geschaut, bei einem container ohne fixe MAC fehlt der entsprechende Eintrag in der qnap.json

  • Hallo zerina,


    vielen Dank für Deine Unterstützung!

    Ich werde das bei mir testen und berichten.


    Tschau

    Uwe

    Hallo zerina,


    es klappt! Man muss allerdings die MAC in beiden Dateien nachträglich bei gestoppter Containerstation einfügen, dann kann diese auch nachträglich gesetzt werden.


    Prima, jetzt gibt es kein DHCP-Chaos mehr 8)


    Tschau

    Uwe

  • Prima, danke für die Rückmeldung.

    Das Konzept bei Docker ist bei Änderungen einen neuen Container mit den gewünschten Änderungen zu erstellen. Ich mache das so gut wie nie, verstehe auch nicht warum das so "umständlich" ist.