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"
以上是关于docker容器域名映射的主要内容,如果未能解决你的问题,请参考以下文章