Home >Operation and Maintenance >Docker >How does docker get hostname?
How does docker get the hostname?
Docker's method of obtaining hostname:
The test passed in the nodejs environment. The same applies to other languages. You only need to use the method of obtaining environment variables.
Idea: The docker container and the host environment are isolated, but the host name of the host can be passed in as an environment variable when starting the docker container, and the code can obtain the value in the container.
Operation:
docker run -d -p 3000:3000 --name myTest -e HOST_Q=$(hostname) mytest:v1 # 使用-e 参数传入环境变量,值为主机名
If you use a yml file to start:
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
After successful startup, there will be an additional HOST_Q in the internal environment variable of the container. You can then use the program to take it out:
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); } }
Recommended tutorial: "docker video tutorial"
The above is the detailed content of How does docker get hostname?. For more information, please follow other related articles on the PHP Chinese website!