Sofern nicht überschrieben, scheint der Hostname die kurze Container-ID in Docker 1.12 zu sein
[email protected]:/project# cat /etc/hostname
d2258e6dec11
Extern
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d2258e6dec11 300518d26271 "bash" 5 minutes ago
$ docker -v
Docker version 1.12.0, build 8eab29e, experimental
Ich habe herausgefunden, dass die Container-ID in /proc/self/cgroup
zu finden istSo können Sie die ID mit :
erhaltencat /proc/self/cgroup | grep -o -e "docker-.*.scope" | head -n 1 | sed "s/docker-\(.*\).scope/\\1/"
Sie können mit Docker innerhalb eines Containers mit Unix-Socket über Docker Remote API kommunizieren:
https://docs.docker.com/engine/reference/api/docker_remote_api/
In einem Container können Sie eine verkürzte Docker-ID herausfinden, indem Sie $HOSTNAME
untersuchen env var. Laut Dokument besteht eine geringe Wahrscheinlichkeit einer Kollision. Ich denke, dass Sie sich bei einer kleinen Anzahl von Containern keine Sorgen machen müssen. Ich weiß nicht, wie ich direkt die vollständige ID erhalte.
Sie können Container ähnlich wie in banyan beschrieben inspizieren Antwort:
GET /containers/4abbef615af7/json HTTP/1.1
Antwort:
HTTP/1.1 200 OK
Content-Type: application/json
{
"Id": "4abbef615af7...... ",
"Created": "2013.....",
...
}
Alternativ können Sie die Docker-ID in einer Datei an den Container übertragen. Die Datei befindet sich auf dem "gemounteten Volume", sodass sie in den Container übertragen wird:
docker run -t -i -cidfile /mydir/host1.txt -v /mydir:/mydir ubuntu /bin/bash
Die Docker-ID (gekürzt) befindet sich in der Datei /mydir/host1.txt im Container.