关于docker:聊聊如何在docker环境中配置hosts

6次阅读

共计 1599 个字符,预计需要花费 4 分钟才能阅读完成。

前言

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

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

配置内容的解释如下图

总结

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

正文完
 0