docker怎么獲取hostname?
docker獲取hostname的方法:
在nodejs環境中測試通過,其它語言同理,只需要使用獲取環境變量的方法即可。
思路:docker容器和宿主機環境是隔離的,但是可以在啟動docker容器時將宿主機的主機名以環境變量的形式傳入,代碼在容器中獲取該值即可。
操作:
docker?run?-d?-p?3000:3000?--name?myTest?-e?HOST_Q=$(hostname)??mytest:v1?#?使用-e?參數傳入環境變量,值為主機名
如果使用yml文件啟動:
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
啟動成功后,容器內部環境變量就多了一個HOST_Q,接下來使用程序取出即可:
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>?map?=?System.getenv(); ????????String?hostName?=?map.get("HOST_Q"); ????????System.out.println(hostName);??? ????} }</string>
推薦教程:《docker視頻教程》
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END
喜歡就支持一下吧
相關推薦