【Docker】配置容器的hosts来实现域名指定服务

需求

在使用docker-chrome进行selenium自动化测试的时候,希望客户端能够通过某种形式,让我们的case跑到测试环境取,这时候有两个方式:

1. 给浏览器使用代理(这里不讲,前面有个文章已经说过了)
2. 修改执行的selenium客户端的hosts配置

介绍下修改docker容器的hosts方式

1. 容器内容修改

docker exec -it chrome bash直接进入容器中,然后vim修改/etc/hosts,可生效使用。需要注意的是docker rm后docker run起来的容器,会没有之前修改的内容,所这种方式不是长久之计;

2. 修改dockerfile来修改images的hosts

在设计dockerfile制作镜像的时候,可以通过 RUN命令echo '192.168.1.9 test >> /etc/hosts'直接修改。在dockerfile前需要user root,需要你是root用户,/etc/hosts文件对于普通用户是没有权限的。(这里需要注意的是一般容器里没有vi/vim的工具,第一步里使用的vim可以在制作image时安装)

3. 使用运行时命令docker run --add-host=

官网docker文档中有提到docker run运行容器的时候,可以通过参数–add-host来添加域名和IP信息到容器的/etc/hosts文件中

docker run --add-host=test.docker.com:192.168.1.9   --name se-chrome  se/chrome:3

如果想要添加多个,添加一个--add-host

docker run 
--add-host=test.docker.com:192.168.1.9   
--add-host=test2.docker.com:192.168.1.10
--name se-chrome  se/chrome:3

4. 可使用编排工具docker-compose添加

官网文档中有介绍在docker-compose.yml文件中,通过配置参数extra_hosts来实现:

extra_hosts:
	- "test.docker.com:192.168.1.9"
	- "add-host=test2.docker.com:192.168.1.10"

这里需要注意格式,不然会报错

5. 可以使用swarm集群中的create --host来添加

--host list     Set one or more custom host-to-IP mappings (host:ip)
docker service create --name my-service --host foo:127.0.0.1 nginx:alpine

注意:–host可以是一个,也可以时一个list,多一个的时候就多一个–host

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值