2016-03-25 13 views
15

Używam docker inspect, aby uzyskać informacje o obrazie. Na wyjściu znajduje się Config i ContainerConfig, a większość wartości jest taka sama, z wyjątkiem CMD.Czym różni się Config i ContainerConfig w oknie dokowanym?

W praktyce efekt Config. Bo muszę dodać cmd w poleceniu run. $ docker run -it debian bash

Zastanawiam się, jaka jest różnica między tymi dwoma przedmiotami?

$ docker inspect debian 
[ 
{ 
    "Id": "7abab0fd74f97b6b398a1aca68735c5be153d49922952f67e8696a2225e1d8e1", 
    ...... 
    "ContainerConfig": { 
     "Hostname": "e5c68db50333", 
     "Domainname": "", 
     "User": "", 
     "AttachStdin": false, 
     "AttachStdout": false, 
     "AttachStderr": false, 
     "Tty": false, 
     "OpenStdin": false, 
     "StdinOnce": false, 
     "Env": null, 
     "Cmd": [ 
      "/bin/sh", 
      "-c", 
      "#(nop) CMD [\"/bin/bash\"]" 
     ], 
     "Image": "d8bd0657b25f17eef81a3d52b53da5bda4de0cf5cca3dcafec277634ae4b38fb", 
     "Volumes": null, 
     "WorkingDir": "", 
     "Entrypoint": null, 
     "OnBuild": null, 
     "Labels": {} 
    }, 
    "Config": { 
     "Hostname": "e5c68db50333", 
     "Domainname": "", 
     "User": "", 
     "AttachStdin": false, 
     "AttachStdout": false, 
     "AttachStderr": false, 
     "Tty": false, 
     "OpenStdin": false, 
     "StdinOnce": false, 
     "Env": null, 
     "Cmd": [ 
      "/bin/bash" 
     ], 
     "Image": "d8bd0657b25f17eef81a3d52b53da5bda4de0cf5cca3dcafec277634ae4b38fb", 
     "Volumes": null, 
     "WorkingDir": "", 
     "Entrypoint": null, 
     "OnBuild": null, 
     "Labels": {} 
    }, 
    ...... 
} 
] 

Odpowiedz

7

Jak wspomniano w issue 18880, dotyczące ContainerConfig:

Co widzisz tam jest związane z historią, w jaki sposób została stworzona.
Spróbuj uruchomić docker history ... na swoim obrazie, a zobaczysz pełną historię.
Docker umieści komendy Dockerfile w sekcji CMD, aby śledzić sposób tworzenia tej warstwy/kontenera.
Jest używany tylko do wyszukiwania w pamięci podręcznej (wewnętrzne przetwarzanie w doku) i nie może być używany przez użytkownika.

Jest również widoczne image/image.go jako:

// ContainerConfig is the configuration of the container that is committed into the image 
ContainerConfig container.Config `json:"container_config,omitempty"` 

Na przykład, issue 17780 przedstawia pusty ContainerConfig:

ContainerConfig obrazu jest pojemnik obraz został wygenerowany od.
W przypadku obrazu nie został on wygenerowany z pojemnika, ale z działającego pod numerem docker import.

+0

Jeśli utworzę obraz z 'Dockerfile'. "ContainerConfig" pochodzi z 'FROM: image'? – firelyu

+0

@firelyu pochodzi z ostatniej warstwy wykonanej przez budowanie dockera z ostatniej linii pliku Dockerfile. – VonC

+0

@firelyu dotyczące "warstw", patrz http://stackoverflow.com/a/36079044/6309 – VonC

Powiązane problemy