iT邦幫忙

2023 iThome 鐵人賽

DAY 16
0
DevOps

一步步學DevOps:30天入門計劃系列 第 16

Day 16 Container Network和Volume 簡述

  • 分享至 

  • xImage
  •  

Volume(資料儲存):

Volume 是 Docker 中用來儲存資料的機制之一,容器的生命週期是暫時性的,當容器被刪除時其內部資料也會一併刪除,透過 Volume 可以將容器內的數據保存到主機(Host Machine)上,容器之間或容器與主機之間共享應用程式數據資料,如資料庫容器或應用程序日誌的存儲,可以將資料持久保存,讓容器在不同的生命週期中保留和分享資料。

常用的 Volume 管理指令:

  • 建立一個 Volume:
docker volume create my-volume 
  • 列出所有 Volumes:
docker volume ls 
  • 刪除一個 Volume:
docker volume rm my-volume
  • 查看 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 管理指令:

  • 建立一個自定義 Network:
docker network create my-network 
  • 列出所有 Networks:
docker network ls 
  • 刪除一個 Network:
docker network rm my-network 
  • 查看 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

上一篇
Day 15 使用Docker建立Container
下一篇
Day 17 如何使用 Dockerfile 建立 image
系列文
一步步學DevOps:30天入門計劃30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言