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

How does docker get hostname?

coldplay.xixi
Release: 2020-06-13 12:45:40
Original
6077 people have browsed it

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 参数传入环境变量,值为主机名
Copy after login

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
Copy after login

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":"/"}
Copy after login

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);   
    }
}
Copy after login

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!

Related labels:
source:php.cn
Statement of this Website
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template