docker容器域名映射

Posted 杰哥的技术杂货铺

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker容器域名映射相关的知识,希望对你有一定的参考价值。

为解决每次区块链连接地址变动时,都必须修改程序内或者程序内附带的连接IP地址

故实现本地hosts文件IP与域名的映射

实现方式:

场景一:

服务为传统方式启动

  • 解决方法:
    在服务器本地的/etc/hosts文件内添加IP和域名的映射
vim /etc/hosts
IP 域名

场景二:

服务为容器方式启动

目前我司在使用docker run创建Docker容器时,共有两种方式指定容器的网络模式,分别是:

  • host模式,使用–net=host指定。

  • bridge模式,使用–net=bridge指定。(即 -p 宿主机映射端口:容器暴露端口)

针对这两种不同的容器网络模式,容器需要有不同的方式进行本地域名映射

  • 1、 host模式

使用参数

--network=host

容器每次启动时,会从宿主机中获取一份hosts文件,容器内修改hosts文件,不会影响到宿主机文件配置。宿主机内修改hosts文件后,容器重启即会重新获取一份hosts文件,覆盖原来的配置

举个例子:

宿主机中添加本地域名映射:
10.20.29.66 www.blockchain.com

容器启动方式:
docker run -itd --network=host --name nginx  nginx:1.14
  • 2、bridge模式 (即-p 宿主机映射端口:容器暴露端口)

使用参数

==--add-host 域名:IP==

启动容器时,可配置以上参数,添加容器内域名映射,此映射不影响宿主机hosts文件配置
若不需要重新生成容器,仅需要改变参数,可在容器内vim修改hosts文件

举个例子:

docker run -itd --name nginx -p 8080:80 --add-host www.blockchain.com:10.20.29.66 nginx:1.14

场景三:

除以上传统方式及docker方式启动服务外,我司大部分环境需使用k8s启动。
若需要连接区块链的服务器为k8s启动,则可在此服务的Deployment文件中添加如下参数:

spec:
      hostAliases:
      - ip: "10.20.29.66"
        hostnames:
        - "www.blockchain.com"

Kubernetes 官方中文文档配置链接

以上是关于docker容器域名映射的主要内容,如果未能解决你的问题,请参考以下文章

Docker容器修改dns

docker 容器修改端口

Docker-端口映射

docker容器启动参数

Docker容器内部端口号映射到外部宿主机(Ubuntu)端口号

只查看正在运行的容器和docker主机做了哪些端口映射的命令