Volume(資料儲存):
Volume 是 Docker 中用來儲存資料的機制之一,容器的生命週期是暫時性的,當容器被刪除時其內部資料也會一併刪除,透過 Volume 可以將容器內的數據保存到主機(Host Machine)上,容器之間或容器與主機之間共享應用程式數據資料,如資料庫容器或應用程序日誌的存儲,可以將資料持久保存,讓容器在不同的生命週期中保留和分享資料。
常用的 Volume 管理指令:
docker volume create my-volume
docker volume ls
docker volume rm my-volume
docker volume inspect my-volume
範例:建立一個 WordPress 容器,將 WordPress應用程式的數據資料儲存在本地主機上的 /path/to/wordpress-data 資料夾中。
docker run -d \
--name wordpress-container \
-v /path/to/wordpress-data:/var/www/html/wp-content \
wordpress
說明:
-v /path/to/wordpress-data:/var/www/html/wp-content
指令中的 -v 表示建立一個 Volume 將容器內部的路徑 /var/www/html/wp-content 連接到主機上的路徑 /path/to/wordpress-data ,將 WordPress 的數據儲存在主機上的目錄中,即使容器刪除仍可以使數據持久保存並可供以後使用。
Network(自定網路):
Network 可以在容器中建立自定義網路,以便容器可以在這些網路上相互通信,而不必公開所有的端口。這有助於隔離容器,提高安全性,隔離它們免受主機公共網路的影響。
常用的 Network 管理指令:
docker network create my-network
docker network ls
docker network rm my-network
docker network inspect my-network
範例:可以創建一個自定義的 Docker 網路,以便這兩個容器能夠互相通信,而不必使用主機的公共網路介面。這樣web 伺服器容器和資料庫伺服器容器可以透過 myapp-network 這個自定義網路相互訪問。
docker network create myapp-network
docker run -d --name web-server --network myapp-network my-web-app
docker run -d --name db-server --network myapp-network my-db-app
–publish/-p (目標端口IP):
--publish /-p 則用於將容器內部的端口連接到主機上的端口,使得外部用戶端可以訪問容器內的應用程式,通常用於 Web 服務或應用程序。
例如,使用 -p 8080:80 可以將容器內的端口 80 連接到主機上的端口 8080,可以使用主機的 IP 和端口 8080 訪問容器中運行的 Web 應用程式。
範例:建立 Nginx Web 伺服器容器,將它連接到主機的端口 8080 上,以便通過主機的 IP 和端口 8080 訪問 Nginx。這個指令將 Nginx 容器內的端口 80 連接到主機上的端口 8080。可以通過 http://localhost:8080 訪問 Nginx 網站。
docker run -d --name nginx-container -p 8080:80 nginx:latest
範例:建立一個 nginx-container 的 Nginx 容器,並連接到自定義網路 my-network。容器內部的端口 80 連接到主機的端口 8080,外部用戶端可以通過主機的 IP 和端口 8080 訪問 Nginx。將 Volume nginx-config 連接到容器的 /etc/nginx/conf.d 目錄
# 建立一個 Volume 來存儲 Nginx 配置文件
docker volume create nginx-config
# 建立一個自定義的 Network
docker network create my-network
# 執行 Nginx 容器
docker run -d \
--name nginx-container \
--network my-network \
-p 8080:80 \
-v nginx-config:/etc/nginx/conf.d \
nginx:latest