需求
在使用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