docker中配置hosts的方法实现

本站所有内容来自互联网收集,仅供学习和交流,请勿用于商业用途。如有侵权、不妥之处,请第一时间联系我们删除!Q群:迪思分享

免费资源网 – https://freexyz.cn/
目录前言配置的方法总结

前言

不知道大家有没有遇到这种场景,部署在docker环境的项目,需要通过域名访问外部一些资源,但因为没有配置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来管理容器,则在可以在创建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

配置内容的解释如下图

docker中配置hosts的方法实现插图

总结

不知道大家有没有好奇为什么没介绍通过dockerfile的方式,因为dockerfile的方式,我试过在dockerfile文件中配置

RUN echo www.lyb-geek.com:127.0.0.1 >> /etc/hosts

不过没生效。也试过将hosts的文件放在项目目录下

通过配置如下内容

COPY hosts /etc/hosts RUN echo www.lyb-geek.com:127.0.0.1 >> /etc/hosts

不过没鸟用。可能配法不对,也有可能是因为被k8s影响到了。不过如果容器是通过k8s来管理,推荐直接通过 配置hostAliases这种方式。其实还有一种方式,就是进入容器内部,直接改hosts文件,就跟我们操作宿主机一样。不过这种方式不推荐就是,因为容器一重启或者销毁,配置就丢了

免费资源网 – https://freexyz.cn/


© 版权声明
THE END
★喜欢这篇文章吗?喜欢的话,麻烦动动手指支持一下!★
点赞15 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容