• 设为首页
  • 收藏本站
  • 积分充值
  • VIP赞助
  • 手机版
  • 微博
  • 微信
    微信公众号 添加方式:
    1:搜索微信号(888888
    2:扫描左侧二维码
  • 快捷导航
    福建二哥 门户 查看主题

    在docker环境中实现配置hosts

    发布者: 山止川行 | 发布时间: 2025-6-17 08:15| 查看数: 47| 评论数: 0|帖子模式

    前言

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

    配置的方法


    方法一

    启动容器的时候加上“–add-host”
    示例:
    1. 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属性
    示例
    1. version: '3.7'
    2. services:
    3.   hello-docker:
    4.     restart: always
    5.     image: 192.168.0.1:5002/lybgeek/hello-docker:1.0
    6.     extra_hosts:
    7.     - "www.lyb-geek.com:127.0.0.1"
    8.     - "www.lyb-geek.cn:192.168.3.1"
    9.     container_name: hello-docker
    10.     network_mode: bridge
    11.     ports:
    12.      - "80:80"
    13.     environment:
    14.      - ENV=dev
    复制代码
    方法三

    如果是通过k8s来管理容器,则在可以在创建pod的yaml文件通过hostAliases添加域名IP映射
    示例:
    1. apiVersion: apps/v1
    2. kind: Deployment
    3. metadata:
    4.   namespace: dev
    5.   name: hello-docker-deployment
    6.   labels:
    7.     app: hello-docker
    8. spec:
    9.   replicas: 3
    10.   selector:
    11.     matchLabels:
    12.       app: hello-docker
    13.   template:
    14.     metadata:
    15.       labels:
    16.         app: hello-docker
    17.     spec:
    18.       hostAliases:
    19.       - hostnames:
    20.         - www.lyb-geek.com
    21.         ip: 127.0.0.1
    22.       - hostnames:
    23.         - www.lyb-geek.cn
    24.         ip: 192.168.3.1
    25.       imagePullSecrets:
    26.       - name: default-secret
    27.       containers:
    28.       - name: hello-docker
    29.         image: 192.168.0.1:5002/lybgeek/hello-docker:1.0
    30.         imagePullPolicy: Always
    31.         ports:
    32.          - containerPort: 80
    33.         env:
    34.           - name: ENV
    35.             value: "dev"
    复制代码
    核心配置
    1. spec:
    2.       hostAliases:
    3.       - hostnames:
    4.         - www.lyb-geek.com
    5.         ip: 127.0.0.1
    6.       - hostnames:
    7.         - www.lyb-geek.cn
    8.         ip: 192.168.3.1
    复制代码
    配置内容的解释如下图


    总结

    不知道大家有没有好奇为什么没介绍通过dockerfile的方式,因为dockerfile的方式,我试过在dockerfile文件中配置
    1. RUN echo 'www.lyb-geek.com:127.0.0.1' >> /etc/hosts
    复制代码
    不过没生效。也试过将hosts的文件放在项目目录下
    通过配置如下内容
    1. COPY hosts /etc/hostsRUN echo 'www.lyb-geek.com:127.0.0.1' >> /etc/hosts
    复制代码
    不过没用。可能配法不对,也有可能是因为被k8s影响到了。不过如果容器是通过k8s来管理,推荐直接通过
    配置hostAliases这种方式。其实还有一种方式,就是进入容器内部,直接改hosts文件,就跟我们操作宿主机一样。
    不过这种方式不推荐就是,因为容器一重启或者销毁,配置就丢了
    以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

    来源:https://www.jb51.net/server/339091qe5.htm
    免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    ×

    最新评论

    QQ Archiver 手机版 小黑屋 福建二哥 ( 闽ICP备2022004717号|闽公网安备35052402000345号 )

    Powered by Discuz! X3.5 © 2001-2023

    快速回复 返回顶部 返回列表