2014-11-17 2 views
2

컨테이너 내부에서 도커의 컨테이너 이름을 얻으려면 어떻게해야합니까?내부에서 컨테이너 이름을 가져 오는 방법은 무엇입니까? docker.io

JSON URL에서 정보를 얻기 위해 컨테이너 내부의 스크립트를 사용해야하므로 inspect를 사용할 수 없습니다.

+0

[컨테이너 내에서 컨테이너 정보를 얻는 방법 도커?] (의 가능한 중복 http://stackoverflow.com/questions/20995351/docker-how-to-get-container-information-from- 컨테이너 내부) – Jason

답변

7

컨테이너 ID가 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이 명시 적으로'--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을 바인드해야) 과 호스트 이름은 당신이 그것을 얻을 수 있습니다 수정되지 않았 via :
docker inspect -f '{{.Name}}' $HOSTNAME

그러나이 해결책은 가장자리의 경우에만 사용할 수 있습니다.

2

docker-compose의 경우 호스트 이름 앞에 /가 있으므로 cut을 사용하여 제거했습니다.

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