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