# 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 是送 SIGSTOPdocker container kill 則是預設直接送 SIGKILL

# docker container rm

移除指定的 container,用法:

docker container rm [OPTIONS] CONTAINER [CONTAINER...]

可移除多個 container

  • -f|--force 如果是執行中的 container,會強制移除(使用 SIGKILL)
  • -v|--volumes 移除分配給 container 的 volume

# 總結

了解 Container 的隔離機制是非常重要的。某種程度上,因為它具備了隔離機制,所以我們才有辦法把它當作「輕量的 VM 」來使用。

# References