Maison >Opération et maintenance >Docker >Comment Docker obtient-il le nom d'hôte ?

Comment Docker obtient-il le nom d'hôte ?

coldplay.xixi
coldplay.xixioriginal
2020-06-12 11:37:376029parcourir

Comment Docker obtient-il le nom d'hôte ?

Comment Docker obtient-il le nom d'hôte ?

Méthode Docker pour obtenir le nom d'hôte :

a réussi le test dans l'environnement nodejs. La même chose s'applique aux autres langages. obtenir des variables d'environnement.

Idée : le conteneur Docker et l'environnement hôte sont isolés, mais le nom d'hôte de l'hôte peut être transmis en tant que variable d'environnement lors du démarrage du conteneur Docker, et le code peut obtenir la valeur dans le conteneur.

Opération :

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

Si vous utilisez un fichier yml pour démarrer :

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

Après un démarrage réussi, il y aura un HOST_Q supplémentaire dans la variable d'environnement interne du conteneur. Vous pouvez ensuite utiliser le programme pour le retirer :

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

Tutoriel recommandé : "tutoriel vidéo docker"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn