Heim >Betrieb und Instandhaltung >Docker >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!