在docker環(huán)境中實(shí)現(xiàn)配置hosts
前言
不知道大家有沒有遇到這種場景,部署在docker環(huán)境的項(xiàng)目,需要通過域名訪問外部一些資源,但因?yàn)闆]有配置dns解析,因此需要通過配置hosts來進(jìn)行訪問。
本文就來聊聊可以通過哪些方式可以在docker容器中配置hosts
配置的方法
方法一
啟動(dòng)容器的時(shí)候加上“–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啟動(dòng)容器,可以配置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的方式,因?yàn)閐ockerfile的方式,我試過在dockerfile文件中配置
RUN echo 'www.lyb-geek.com:127.0.0.1' >> /etc/hosts
不過沒生效。也試過將hosts的文件放在項(xiàng)目目錄下
通過配置如下內(nèi)容
COPY hosts /etc/hosts RUN echo 'www.lyb-geek.com:127.0.0.1' >> /etc/hosts
不過沒用??赡芘浞ú粚?,也有可能是因?yàn)楸籯8s影響到了。不過如果容器是通過k8s來管理,推薦直接通過
配置hostAliases這種方式。其實(shí)還有一種方式,就是進(jìn)入容器內(nèi)部,直接改hosts文件,就跟我們操作宿主機(jī)一樣。
不過這種方式不推薦就是,因?yàn)槿萜饕恢貑⒒蛘咪N毀,配置就丟了
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
docker覆蓋鏡像默認(rèn)命令之docker?entrypoint詳解
entrypoint命令就是覆蓋ENTRYPOINT命令的,本文給大家介紹了docker覆蓋鏡像默認(rèn)命令之docker?entrypoint的相關(guān)知識,需要的朋友可以參考下2023-10-10手把手教你docker部署(使用docker-compose)教程
使用 Docker Compose 可以輕松、高效的管理容器,下面這篇文章主要給大家介紹了關(guān)于手把手教你docker部署(使用docker-compose)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-01-01docker部署Vaultwarden密碼共享管理系統(tǒng)的實(shí)現(xiàn)(圖文)
Vaultwarden是一個(gè)開源的密碼管理器,它提供了類似于Bitwarden的功能,允許用戶安全地存儲和管理密碼、敏感數(shù)據(jù)和身份信息,本文主要介紹了docker部署Vaultwarden密碼共享管理系統(tǒng)的實(shí)現(xiàn),感興趣的可以了解一下2023-10-10利用drone?ci自動(dòng)化部署靜態(tài)博客的完整步驟
drone是基于容器的構(gòu)建服務(wù),配置簡單且免費(fèi),在 github上也有20Kstar,下面這篇文章主要給大家介紹了關(guān)于利用drone?ci自動(dòng)化部署靜態(tài)博客的相關(guān)資料,需要的朋友可以參考下2022-05-05docker無法刪除鏡像報(bào)Error:?No?such?container的錯(cuò)誤問題
docker無法刪除鏡像的解決方法很簡單,只需要簡單三步即可完美解決docker刪除鏡像過程中,一直報(bào)Error:?No?such?container的錯(cuò)誤問題,感興趣的朋友跟隨小編一起看看吧2023-01-01超簡單實(shí)現(xiàn)Docker搭建個(gè)人博文系統(tǒng)
這篇文章主要介紹了超簡單實(shí)現(xiàn)Docker搭建個(gè)人博文系統(tǒng),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12Docker底層技術(shù)Namespace Cgroup應(yīng)用詳解
在本篇文章里小編給大家整理的是關(guān)于Docker底層技術(shù)Namespace Cgroup應(yīng)用的相關(guān)知識點(diǎn),需要的朋友們學(xué)習(xí)下。2019-10-10