【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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章