人生就是不斷學習,調整與更新持續前進。

Docker實戰練習 建構Network應用 基本架構

建構 Docker時要知道怎麼運用Network。

你問的「運用 Docker 建構 Network 應用」很有意思 🚀。我幫你拆解一下思路,然後給一個範例實作,讓你可以快速上手:


1. Docker 與網路 (Networking) 基本概念

在 Docker 裡,每個容器(container)都是獨立的 process,有自己的 網路介面 (network namespace)。常見的 Docker 網路模式有:


2. 建構一個簡單的 Network 應用

假設我們要做一個 Web + Database 的應用(例如 Nginx + MySQL),容器之間透過 Docker 網路互通。

建立自定義網路

docker network create myapp-network

啟動 MySQL 容器

docker run -d \
  --name mydb \
  --network myapp-network \
  -e MYSQL_ROOT_PASSWORD=rootpw \
  -e MYSQL_DATABASE=myappdb \
  mysql:8.0

啟動 Web (Nginx + App) 容器

假設有個應用程式容器(例如 Node.js 或 Rails),可以直接用名字 mydb 連線資料庫:

docker run -d \
  --name myweb \
  --network myapp-network \
  -p 8080:80 \
  my-web-image

這時候,myweb 容器裡的應用程式只要用 mysql://root:rootpw@mydb:3306/myappdb 就能連到資料庫。


3. 使用 Docker Compose (更方便)

建立一個 docker-compose.yml

version: "3.9"

services:
  db:
    image: mysql:8.0
    container_name: mydb
    environment:
      MYSQL_ROOT_PASSWORD: rootpw
      MYSQL_DATABASE: myappdb
    networks:
      - myapp-network

  web:
    build: ./web   # 假設你的 Web app Dockerfile 在 ./web
    container_name: myweb
    ports:
      - "8080:80"
    depends_on:
      - db
    networks:
      - myapp-network

networks:
  myapp-network:
    driver: bridge

然後執行:

docker compose up -d

這樣一來,webdb 就會在同一個 Docker 網路裡互相連通。


4. 延伸應用