docker(alpine+golang)?中?hosts?不生效問題解決方法
一、問題
把使用 golang 開發(fā)的服務(wù)程序部署在以 alpine 為基礎(chǔ)鏡像的容器中,設(shè)置了 /etc/hosts,卻沒有生效,但是在終端中使用 ping 和 curl 域名都可以正常訪問。
二、解決
出現(xiàn)上述問題的根本原因是 DNS 解析順序不一致導(dǎo)致的,在 alpine 中,linux 系統(tǒng)默認跳過 hosts 配置,直接使用機器的 DNS 服務(wù)。因此,有如下三種解決方法。
方法一、增加配置
修改 NDS 解析順序,先設(shè)置讀 files,再設(shè)置讀 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方法三、修改鏡像
終極方法,從根本上解決這個問題,那就是從基礎(chǔ)鏡像上下功夫,打包服務(wù)鏡像的時候,把配置文件加進入,Dockerfile 文件修改如下:
FROM alpine RUN echo "hosts: files dns" > /etc/nsswitch.conf
知識點延伸
alpine 是一個小而美的基礎(chǔ)鏡像包,最新的 latest 包大小是 5.53MB,時間是 2022年7月3日,截圖如下:

到此這篇關(guān)于docker(alpine+golang) 中 hosts 不生效問題解決大全的文章就介紹到這了,更多相關(guān)docker hosts 不生效內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
idea?連接遠程?docker?并部署項目到?docker的過程
這篇文章主要介紹了idea連接遠程docker并部署項目到docker,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-10-10
如何設(shè)置docker開機自啟動,并設(shè)置容器自動重啟
這篇文章主要介紹了如何設(shè)置docker開機自啟動,并設(shè)置容器自動重啟問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-02-02
微信小程序Docker+Nginx環(huán)境配置業(yè)務(wù)域名驗證文件的操作方法
本文介紹了如何在DockerCompose+Nginx環(huán)境下配置并訪問靜態(tài)驗證文件,首先下載驗證文件并將其掛載到容器中,然后修改Nginx配置文件使其能夠正確返回請求路徑下的靜態(tài)文件,最后,測試訪問驗證文件并提交業(yè)務(wù)域名,感興趣的朋友跟隨小編一起看看吧2025-01-01
docke-cli的調(diào)試環(huán)境搭建過程
在搭建docker-cli的調(diào)試環(huán)境時,遇到很多坑,通過本文講解下搭建docke-cli的調(diào)試環(huán)境的詳細方法,需要的朋友可以參考下2022-11-11
docker 報錯 Exited (1) 4 minutes ago的原因分析
這篇文章主要介紹了docker 報錯 Exited (1) 4 minutes ago的原因分析,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11

