Home  >  Article  >  Operation and Maintenance  >  How does docker get hostname?

How does docker get hostname?

coldplay.xixi
coldplay.xixiOriginal
2020-06-12 11:37:376022browse

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!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn