Heim >Betrieb und Instandhaltung >Docker >Wie erhält Docker den Hostnamen?

Wie erhält Docker den Hostnamen?

coldplay.xixi
coldplay.xixiOriginal
2020-06-12 11:37:376029Durchsuche

Wie erhält Docker den Hostnamen?

Wie erhält Docker den Hostnamen?

Dockers Methode zum Abrufen des Hostnamens:

hat den Test in der nodejs-Umgebung bestanden. Dasselbe gilt für andere Sprachen. Sie müssen nur die Methode von verwenden Abrufen von Umgebungsvariablen.

Idee: Der Docker-Container und die Host-Umgebung sind isoliert, aber der Hostname des Hosts kann beim Starten des Docker-Containers als Umgebungsvariable übergeben werden, und der Code kann den Wert im Container abrufen.

Vorgang:

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

Wenn Sie zum Starten eine yml-Datei verwenden:

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

Nach erfolgreichem Start gibt es ein zusätzliches HOST_Q in der internen Umgebungsvariablen des Containers. Sie können es dann mit dem Programm herausnehmen:

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);   
    }
}

Empfohlenes Tutorial: „Docker-Video-Tutorial

Das obige ist der detaillierte Inhalt vonWie erhält Docker den Hostnamen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn