最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

docker容器中無法獲取宿主機hostname的解決方案

 更新時間:2021年03月22日 09:08:45   作者:任慶  
這篇文章主要介紹了docker容器中無法獲取宿主機hostname的解決方案,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

在nodejs環(huán)境中測試通過,其它語言同理,只需要使用獲取環(huán)境變量的方法即可。

思路:

docker容器和宿主機環(huán)境是隔離的,但是可以在啟動docker容器時將宿主機的主機名以環(huán)境變量的形式傳入,代碼在容器中獲取該值即可。

操作:

docker run -d -p 3000:3000 --name myTest -e HOST_Q=$(hostname) mytest:v1 # 使用-e 參數(shù)傳入環(huán)境變量,值為主機名

如果使用yml文件啟動:

version: '3'
services:
 mysql:
 image: mysql:v1
 container_name: xx-mysql
 restart: always
 networks:
  - host
 environment:
  - MYSQL_ROOT_PASSWORD=xxx0209
  - HOST_Q=$(hostname) # 在這設(shè)置
 ports:
  - 3306:3306
 volumes:
  - /opt/data/mysql:/var/lib/mysql:z

啟動成功后,容器內(nèi)部環(huán)境變量就多了一個HOST_Q,接下來使用程序取出即可:

nodejs:

# 從process中取出環(huán)境變量對象
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); 
 }
}

補充:docker容器無法訪問宿主機報出 No route to host

一. 問題描述

在docker部署nacos的時候遇到了這個樣子的問題No route to host 導(dǎo)致了nacos容器無法連接宿主機的docker數(shù)據(jù)庫。

然后我就進入到了nacos容器里面,ping了宿主機的地址,結(jié)果是通著的,然后使用telnet測試了3306端口,結(jié)果也會報出這個異常。

原因是什么呢?明明數(shù)據(jù)庫外部可以正常連接訪問,但是宿主機內(nèi)部容器確實無法訪問?

二. 原因分析

在進行docker部署的時候我們采用的是bridge網(wǎng)橋的模式。

啟動docker時,docker進程會創(chuàng)建一個名為docker0的虛擬網(wǎng)橋,用于宿主機與容器之間的通信。當(dāng)啟動一個docker容器時,docker容器將會附加到虛擬網(wǎng)橋上,容器內(nèi)的報文通過docker0向外轉(zhuǎn)發(fā)。

如果docker容器訪問宿主機,那么docker0網(wǎng)橋?qū)笪闹苯愚D(zhuǎn)發(fā)到本機,報文的源地址是docker0網(wǎng)段的地址。而如果docker容器訪問宿主機以外的機器,docker的SNAT網(wǎng)橋會將報文的源地址轉(zhuǎn)換為宿主機的地址,通過宿主機的網(wǎng)卡向外發(fā)送。

因此,當(dāng)docker容器訪問宿主機時,如果宿主機服務(wù)端口會被防火墻攔截,從而無法連通宿主機,出現(xiàn)No route to host的錯誤。

而訪問宿主機所在局域網(wǎng)內(nèi)的其他機器,由于報文的源地址是宿主機ip,因此,不會被目的機器防火墻攔截,所以可以訪問。

三. 解決方案

1> 關(guān)閉宿主機的防火墻

systemctl stop firewalld

2> 在防火墻上開發(fā)指定的端口

firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --zone=public --add-port=3307/tcp --permanent
firewall-cmd --reload

注:在進行完防火墻的操作之后最好是要進行以下docker的重啟,systemctl restart docker,否則容器到因為虛擬網(wǎng)橋失效而導(dǎo)致的iptables failed問題

四. 小結(jié)

docker的容器網(wǎng)絡(luò)連接一直是一個問題,容器與容器之間,容器與宿主機之間,容器跨主機訪問,所以在涉及到容器的網(wǎng)絡(luò)連接的時候要注意網(wǎng)絡(luò)的問題。

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

相關(guān)文章

  • Docker如何進入啟動容器

    Docker如何進入啟動容器

    本篇文章主要介紹了Docker如何進入啟動容器,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • 通過docker 部署minio的方法(端口號為9105)

    通過docker 部署minio的方法(端口號為9105)

    通過Docker部署MinIO對象存儲服務(wù),并指定API端口為9105,下面給大家分享實現(xiàn)步驟,感興趣的朋友一起看看吧
    2024-12-12
  • 基于Docker搭建Redis主從集群的實現(xiàn)

    基于Docker搭建Redis主從集群的實現(xiàn)

    本文基于Docker+Redis5.0.5版本,通過cluster方式創(chuàng)建一個6個redis實例的主從集群,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • docker 如何添加證書

    docker 如何添加證書

    這篇文章主要介紹了docker 如何添加證書的操作方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • docker安裝nginx并配置ssl的方法步驟

    docker安裝nginx并配置ssl的方法步驟

    本文主要介紹了docker安裝nginx并配置ssl的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-03-03
  • docker tag和docker push的使用詳解

    docker tag和docker push的使用詳解

    這篇文章主要介紹了docker tag和docker push的使用詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • deepin apt命令安裝最新版本的docker的方法

    deepin apt命令安裝最新版本的docker的方法

    這篇文章主要介紹了deepin apt命令安裝最新版本的docker的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • dockerfile發(fā)布springboot項目實踐

    dockerfile發(fā)布springboot項目實踐

    使用Docker的其中一個目的,是為了更加簡單,方便的部署我們編寫的服務(wù),本文主要介紹了dockerfile發(fā)布springboot項目實踐,具有一定的參考價值,感興趣的可以了解一下
    2023-08-08
  • docker-compose build使用參數(shù)args方式

    docker-compose build使用參數(shù)args方式

    這篇文章主要介紹了docker-compose build使用參數(shù)args方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • docker配置阿里云鏡像倉庫的實現(xiàn)

    docker配置阿里云鏡像倉庫的實現(xiàn)

    本文主要介紹了docker配置阿里云鏡像倉庫的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08

最新評論

八宿县| 大荔县| 阜新市| 章丘市| 琼中| 临猗县| 博爱县| 永康市| 偏关县| 固阳县| 阜城县| 札达县| 馆陶县| 那坡县| 邛崃市| 永胜县| 青阳县| 巴林右旗| 福建省| 称多县| 平度市| 客服| 岑巩县| 来凤县| 融水| 分宜县| 吉安市| 托克逊县| 武清区| 长岛县| 通化县| 井研县| 依安县| 毕节市| 富裕县| 三台县| 孟村| 安泽县| 开化县| 登封市| 且末县|