使用 Docker 在一台主機上執行多 HTTP Service,因為需要 Port 對外,如果看不懂網路其他的設定不妨參考 Hoyo 的思路
Hoyo 的作法是使用一台 Docker container 安裝 Nginx 來提供 Proxy Pass 功能,將網址直接轉到 container。
此方法的好處是,新增子 HTTP Service 只須 docker run 不需要設定其他網路設定,對於 Nginx 只需要新增 conf 重新啟動 nginx service 後即可啟用,也不需要變更 container
--
Nginx container
Nginx 的主機選擇的是 Debian Linux ,所以須先 pull 一個 debian 環境,在此使用的是 debian:9 ,然後是安裝 nginx
1 |
# apt install -y nginx |
--
子 HTTP Service container
實際提供 HTTP 服務的容器,使用的也是 Debian:9 ,然後安裝的是 Apache 2.4 藉以和 Proxy Pass 區隔,當然使用 Nginx 也可以
--
子 WWW 啟動
子 WWW 啟動不需要啟動 port 對應
1 |
# docker run --name="www1" -d hoyo/httpd:v6 |
查詢 contriner IP address
1 2 3 4 |
# docker inspect www1 | grep IPAddress "SecondaryIPAddresses": null, "IPAddress": "172.17.0.2", "IPAddress": "172.17.0.2", |
1 2 3 4 |
# docker inspect -f '{{.Name}} - {{.NetworkSettings.IPAddress }}' $(docker ps -aq) /www2 - 172.17.0.4 /nginx - 172.17.0.3 /www1 - 172.17.0.2 |
--
使用 Nginx 將多 container WWW 服務轉到網址
1 |
# docker run --name="nginx" -p 80:80 -itd debian/nginx:v1 bash |
vi /etc/nginx/sites-available/www1
1 2 3 4 5 6 7 8 9 |
server { listen 80; server_name www1.hoyo.idv.tw; location / { proxy_set_header Host $host; proxy_pass http://172.17.0.2; } } |
將需要啟動的網站連結到 sites-enabled
1 |
# ln -s /etc/nginx/sites-available/www1 /etc/nginx/sites-enabled/www1 |
重新啟動 Nginx
1 |
# nginx -s reload |
--
2,120 total views, 4 views today