GNU/Linux >> Linux の 問題 >  >> Linux

コンテナー自体から Docker Linux コンテナー情報を取得するにはどうすればよいですか?

オーバーライドされない限り、ホスト名は 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 にあります。


Linux
  1. Dockerコンテナからカスタムイメージを作成する方法

  2. Docker でコンテナに関する情報を取得する方法

  3. Linux コマンド ラインからビデオ ファイルの解像度 (幅と高さ) を取得するにはどうすればよいですか?

  1. CからLinuxで現在のファイル(pwd)へのパスを取得する方法は?

  2. IP (Linux) からホスト名を取得するには?

  3. bashで文字列から最後の数字を取得するにはどうすればよいですか?

  1. LinuxでターミナルからWebを検索する方法

  2. Linux コマンドラインからフォルダーをコピーするにはどうすればよいですか?

  3. bashからネットマスクを取得するには?