docker怎么獲取hostname?

docker怎么獲取hostname?

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
喜歡就支持一下吧
點贊15 分享