網(wǎng)站首頁 編程語言 正文
一、問題
把使用 golang 開發(fā)的服務程序部署在以 alpine 為基礎鏡像的容器中,設置了 /etc/hosts,卻沒有生效,但是在終端中使用 ping 和 curl 域名都可以正常訪問。
二、解決
出現(xiàn)上述問題的根本原因是 DNS 解析順序不一致導致的,在 alpine 中,linux 系統(tǒng)默認跳過 hosts 配置,直接使用機器的 DNS 服務。因此,有如下三種解決方法。
方法一、增加配置
修改 NDS 解析順序,先設置讀 files,再設置讀 dns,具體方法如下:
echo "hosts: files dns" > /etc/nsswitch.conf
方法二、映射配置
但是方法一會存在一個問題,就是容器重啟后,配置文件就消失了。因此可以使用如下方式來規(guī)避這個問題,映射這個配置文件進去。
首先創(chuàng)建一個配置文件 nsswitch.conf ,內(nèi)容如下:
hosts: files dns
然后,在 docker-compose.yml 中或者 docker run 中映射一下配置文件,參考方法如下:
version: '3' services: test: image: tets-x86:latest container_name: test-x86 restart: always network_mode: "host" volumes: - ./config/nsswitch.conf:/etc/nsswitch.conf
方法三、修改鏡像
終極方法,從根本上解決這個問題,那就是從基礎鏡像上下功夫,打包服務鏡像的時候,把配置文件加進入,Dockerfile 文件修改如下:
FROM alpine RUN echo "hosts: files dns" > /etc/nsswitch.conf
知識點延伸
alpine 是一個小而美的基礎鏡像包,最新的 latest 包大小是 5.53MB,時間是 2022年7月3日,截圖如下:
原文鏈接:https://blog.csdn.net/liuzehn/article/details/125669371
相關推薦
- 2022-07-22 SQL?Server使用CROSS?APPLY與OUTER?APPLY實現(xiàn)連接查詢_MsSql
- 2022-05-17 基于Pytorch的神經(jīng)網(wǎng)絡之Regression的實現(xiàn)_python
- 2022-03-05 Flutter基本組件Basics?Widget學習_Android
- 2022-06-28 python生成圖片驗證碼的方法_python
- 2021-12-10 Ubuntu環(huán)境下mongodb安裝配置詳細步驟_MongoDB
- 2023-04-12 Python中如何實現(xiàn)真正的按位取反運算_python
- 2021-12-12 c++虛函數(shù)與虛函數(shù)表原理_C 語言
- 2024-03-13 QAobject修改excel字體亂碼問題
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學習環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支