ホームページ  >  記事  >  運用・保守  >  docker はどのようにしてホスト名を取得しますか?

docker はどのようにしてホスト名を取得しますか?

coldplay.xixi
coldplay.xixiオリジナル
2020-06-12 11:37:376000ブラウズ

docker はどのようにしてホスト名を取得しますか?

docker はどのようにしてホスト名を取得しますか?

Docker のホスト名取得方法:

nodejs 環境でテストに合格しました。他の言語でも同様です。次の方法を使用するだけです。環境変数を取得します。

アイデア: Docker コンテナーとホスト環境は分離されていますが、Docker コンテナーの起動時にホストのホスト名を環境変数として渡すことができ、コードはコンテナー内の値を取得できます。

操作:

docker run -d -p 3000:3000 --name myTest -e HOST_Q=$(hostname)  mytest:v1 # 使用-e 参数传入环境变量,值为主机名

yml ファイルを使用して開始する場合:

version: '3'
services:
  mysql:
    image: mysql:v1
    container_name: xx-mysql
    restart: always
    networks:
      - host
    environment:
      - MYSQL_ROOT_PASSWORD=xxx0209
      - HOST_Q=$(hostname)  # 在这设置
    ports:
      - 3306:3306
    volumes:
      - /opt/data/mysql:/var/lib/mysql:z

正常に起動した後、コンテナーの内部環境変数に追加の HOST_Q が存在します。その後、プログラムを使用してそれを取り出すことができます:

nodejs:

# 从process中取出环境变量对象
let env = process.env;
console.log(JSON.stringify(env));
# env['HOST_Q']就是最终要获取的主机名
 
# output
[2019-04-17T06:54:12.951Z] [e1e7115e0a33] [info]: {"NODE_VERSION":"8.9.4","HOSTNAME":"e1e7115e0a33","YARN_VERSION":"1.3.2","HOME":"/root","HOST_Q":"emg-ubuntu-pub02","PATH":"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin","PWD":"/"}

java:

public class Test {
    public static void main(String[] args) {
        Map<String, String> map = System.getenv();
        String hostName = map.get("HOST_Q");
        System.out.println(hostName);   
    }
}

推奨チュートリアル: "docker videoチュートリアル"

以上がdocker はどのようにしてホスト名を取得しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。