2014-11-17 5 views
2

Как я могу получить имя контейнера докера изнутри контейнера?Как получить название контейнера изнутри? docker.io

Я не могу использовать проверку, потому что мне нужно использовать скрипт из контейнера, чтобы получить информацию с URL-адреса JSON.

+0

Возможный дубликат [Докер, как получить информацию из контейнера внутри контейнера?] (Http://stackoverflow.com/questions/20995351/docker-how-to-get-container-information-from- внутри контейнера) – Jason

ответ

7

Если вы имеете в виду идентификатор контейнера, он доступен в env как переменная hostname. Он должен быть взаимозаменяемым с именем для большинства операций.

env 
HOSTNAME=5252eb24b296 
TERM=xterm 
.... 

CONTAINER ID  IMAGE    COMMAND    CREATED    STATUS    PORTS    NAMES 
5252eb24b296  ubuntu:14.04  "bash"    23 seconds ago  Up 22 seconds       test 
+5

Хотя, этот способ не будет работать в двух случаях. Сначала - если имя хоста явно указано флагом '--hostname', второе - при использовании режима' --net = host'. –

+0

Я могу работать с этим, спасибо! –

4

Я думаю, самый надежный способ использовать комбинацию --cidfile и -v вариантов.

docker run --cidfile=/tmp/container.id -v /tmp/container.id:/tmp/container.id ${IMAGE}

Если вы начнете контейнер таким образом, вы можете прочитать /tmp/container.id изнутри вашего контейнера.

3

, если у вас есть докер внутри контейнера,
(вы должны связать -v /var/run/docker.sock:/var/run/docker.sock)
и имя хоста не был изменен, вы можете получить его через:
docker inspect -f '{{.Name}}' $HOSTNAME

но это решение может использоваться только в кромках.

2

В случае сокета-докеры у нас есть/перед именем хоста, поэтому с помощью разреза мы удалили это.

docker inspect -f '{{ .Name }}' "$HOSTNAME" | cut -c 2-