Maison >Opération et maintenance >Docker >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!