在docker環(huán)境中實現(xiàn)配置hosts
前言
不知道大家有沒有遇到這種場景,部署在docker環(huán)境的項目,需要通過域名訪問外部一些資源,但因為沒有配置dns解析,因此需要通過配置hosts來進行訪問。
本文就來聊聊可以通過哪些方式可以在docker容器中配置hosts
配置的方法
方法一
啟動容器的時候加上“–add-host”
示例:
docker run --add-host='www.lyb-geek.com:127.0.0.1' --add-host='www.lyb-geek.cn:192.168.3.1' --name hello-docker -it 192.168.0.1:5002/lybgeek/hello-docker:1.0
方法二
如果是通過docker-compose啟動容器,可以配置extra_hosts屬性
示例
version: '3.7'
services:
hello-docker:
restart: always
image: 192.168.0.1:5002/lybgeek/hello-docker:1.0
extra_hosts:
- "www.lyb-geek.com:127.0.0.1"
- "www.lyb-geek.cn:192.168.3.1"
container_name: hello-docker
network_mode: bridge
ports:
- "80:80"
environment:
- ENV=dev方法三
如果是通過k8s來管理容器,則在可以在創(chuàng)建pod的yaml文件通過hostAliases添加域名IP映射
示例:
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: dev
name: hello-docker-deployment
labels:
app: hello-docker
spec:
replicas: 3
selector:
matchLabels:
app: hello-docker
template:
metadata:
labels:
app: hello-docker
spec:
hostAliases:
- hostnames:
- www.lyb-geek.com
ip: 127.0.0.1
- hostnames:
- www.lyb-geek.cn
ip: 192.168.3.1
imagePullSecrets:
- name: default-secret
containers:
- name: hello-docker
image: 192.168.0.1:5002/lybgeek/hello-docker:1.0
imagePullPolicy: Always
ports:
- containerPort: 80
env:
- name: ENV
value: "dev"核心配置
spec:
hostAliases:
- hostnames:
- www.lyb-geek.com
ip: 127.0.0.1
- hostnames:
- www.lyb-geek.cn
ip: 192.168.3.1配置內(nèi)容的解釋如下圖

總結(jié)
不知道大家有沒有好奇為什么沒介紹通過dockerfile的方式,因為dockerfile的方式,我試過在dockerfile文件中配置
RUN echo 'www.lyb-geek.com:127.0.0.1' >> /etc/hosts
不過沒生效。也試過將hosts的文件放在項目目錄下
通過配置如下內(nèi)容
COPY hosts /etc/hosts RUN echo 'www.lyb-geek.com:127.0.0.1' >> /etc/hosts
不過沒用??赡芘浞ú粚?,也有可能是因為被k8s影響到了。不過如果容器是通過k8s來管理,推薦直接通過
配置hostAliases這種方式。其實還有一種方式,就是進入容器內(nèi)部,直接改hosts文件,就跟我們操作宿主機一樣。
不過這種方式不推薦就是,因為容器一重啟或者銷毀,配置就丟了
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
firewalld防火墻開啟后無法啟動docker問題及解決
文章描述了在Linux上開啟或重啟防火墻后,創(chuàng)建docker自定義網(wǎng)絡(luò)時出現(xiàn)的錯誤,原因是firewalld和docker在操作iptables時發(fā)生了沖突,文章提供了兩種解決辦法:1. 重啟Docker服務(wù);2. 讓Docker繞過firewalld2025-12-12
docker容器內(nèi)網(wǎng)絡(luò)請求緩慢問題解決
在使用docker的過程中發(fā)現(xiàn)了幾個問題,在docker里進行的網(wǎng)絡(luò)請求經(jīng)常會失敗,這篇文章主要介紹了docker容器內(nèi)網(wǎng)絡(luò)請求緩慢問題解決2019-01-01
Docker可視化ui管理工具Portainer安裝及使用解析
這篇文章主要介紹了Docker可視化ui管理工具Portainer安裝及使用解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-11-11
Docker+Nginx+KeepaLived實現(xiàn)Nginx一主一從高可用方式
在CentOS7主從服務(wù)器上部署Nginx容器并配置Keepalived實現(xiàn)高可用,通過虛擬IP自動切換,主從均需安裝Keepalived,配置健康檢查腳本監(jiān)控Nginx狀態(tài),故障時自動重啟或切換虛擬IP,需關(guān)閉防火墻和SELinux,并確保腳本有執(zhí)行權(quán)限2025-07-07
Docker網(wǎng)絡(luò)之單host網(wǎng)絡(luò)及使用案例
本文重點給大家講解Docker單主機網(wǎng)絡(luò)的相關(guān)知識及使用案例,重點是使用案例,感興趣的朋友一起看看吧2017-08-08
Docker 實現(xiàn)在線集成開發(fā)環(huán)境實例詳解
這篇文章主要介紹了Docker 實現(xiàn)在線集成開發(fā)環(huán)境實例詳解的相關(guān)資料,這里對實現(xiàn)在線集成開發(fā)環(huán)境,進行了詳細的介紹及實現(xiàn),需要的朋友可以參考下2016-11-11

