オーバーライドされない限り、ホスト名は Docker 1.12 の短いコンテナー ID のようです
[email protected]:/project# cat /etc/hostname
d2258e6dec11
外部的に
$ 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
コンテナー ID は /proc/self/cgroup にあります
したがって、次のようにして ID を取得できます:
cat /proc/self/cgroup | grep -o -e "docker-.*.scope" | head -n 1 | sed "s/docker-\(.*\).scope/\\1/"
Docker Remote API 経由で UNIX ソケットを使用して、コンテナー内から Docker と通信できます。
https://docs.docker.com/engine/reference/api/docker_remote_api/
コンテナーでは、$HOSTNAME
を調べることで短縮された Docker ID を見つけることができます。 env var. doc によると、衝突の可能性はわずかですが、コンテナの数が少ない場合は心配する必要はないと思います。完全な ID を直接取得する方法がわかりません。
banyan で説明されている方法と同様の方法でコンテナーを検査できます。 答え:
GET /containers/4abbef615af7/json HTTP/1.1
応答:
HTTP/1.1 200 OK
Content-Type: application/json
{
"Id": "4abbef615af7...... ",
"Created": "2013.....",
...
}
または、docker id をファイルでコンテナーに転送することもできます。ファイルは「マウントされたボリューム」にあるため、コンテナーに転送されます:
docker run -t -i -cidfile /mydir/host1.txt -v /mydir:/mydir ubuntu /bin/bash
Docker ID (短縮) は、コンテナー内のファイル /mydir/host1.txt にあります。