# Port forwarding
練習此題,可以了解:
- Docker Container 隔離特性
- 如何透過 port 存取 Container 提供的服務
# 指令練習
# 執行多次,port 都不會打架
docker container run -d nginx:alpine
docker container run -d nginx:alpine
docker container run -d nginx:alpine
docker container run -d nginx:alpine
docker container run -d nginx:alpine
docker container run -d --name my-web -p 8080:80 nginx:alpine
docker container stop my-web
docker container rm -vf my-web
# 指令說明
# docker container run
-d|--detach背景執行 container。-p|--publish把 container 的 port 公開到 host 上,格式為[IP]:[HOST_PORT]:[CONTAINER_PORT]
已經跑在前景的 container 可以用 Ctrl + P、Ctrl + Q 組合鍵 detach;接著可以再用
docker container attach讓它回到前景
# docker container stop
停止指定的 container,用法:
docker container stop [OPTIONS] CONTAINER [CONTAINER...]
此指令會送出 SIGTERM 給 container 的主程序,當 timeout(預設 10,可使用 -t|--time 參數調整)後會再送出 SIGKILL。
類似地,
docker container pause是送SIGSTOP;docker container kill則是預設直接送SIGKILL。
# docker container rm
移除指定的 container,用法:
docker container rm [OPTIONS] CONTAINER [CONTAINER...]
可移除多個 container
-f|--force如果是執行中的 container,會強制移除(使用 SIGKILL)-v|--volumes移除分配給 container 的 volume
# 總結
了解 Container 的隔離機制是非常重要的。某種程度上,因為它具備了隔離機制,所以我們才有辦法把它當作「輕量的 VM 」來使用。