docker中配置hosts的方法实现(dockercompose hosts)没想到

随心笔谈12个月前发布 admin
91 0



目录前言配置的方法总结

不知道大家有没有遇到这种场景,部署在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

配置内容的解释如下图

不知道大家有没有好奇为什么没介绍通过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文件,就跟我们操作宿主机一样。不过这种方式不推荐就是,因为容器一重启或者销毁,配置就丢了

到此这篇关于docker中配置hosts的方法实现的文章就介绍到这了,更多相关docker配置hosts内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:docker(alpine+golang)?中?hosts?不生效问题解决方法Docker每次启动容器,IP及hosts指定的操作docker 容器自定义 hosts 网络访问操作

© 版权声明

相关文章