聊聊如何在docker环境中配置hosts




点击上方蓝字关注我们

1

前言

不知道大家有没有遇到这种场景,部署在docker环境的项目,需要通过域名访问外部一些资源,但因为没有配置dns解析,因此需要通过配置hosts来进行访问。本文就来聊聊可以通过哪些方式可以在docker容器中配置hosts

2

配置的方法



方法一:启动容器的时候加上“–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


3、方法三:如果是通过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

3

总结

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


原文始发于微信公众号(Linyb极客之路):聊聊如何在docker环境中配置hosts

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/129995.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!