Docker Tutorial
2022-03-06
Windows 開發者生態系的 Docker 入門介紹,從下載安裝到實際使用。以開發者的觀點探討 Docker 可以為開發流程與應用所帶來的便利與革新;從營運人員的角度探討 Docker 的容器化技術如何使 Infra as Code 以及 MicroServices 如何可能,從而也觸及 Docker 之間交互作用,引導出為什麼我們需要 Kubernetes Orchestration 來達到複雜的管理與調度 😀
說明
Docker Desktop
- WSL2 Backend (Win Home / Win Pro)
- HypverV Backend (Win Pro)
Windows Container
- Windows Server Container (共用核心)
- HyperV Container (獨立核心、完全隔離)
安裝方式 (WSL2 Backend)
使用 Windows Run optionalfeatures 開啟 Windows 子系統 Linux 版、Windows Hypervisor 平台、虛擬機器平台
使用 Dcoker Desktop 進行安裝:
如果切換成 Windows Containers 模式,因為 Windows Home Edition 不支援 HyperV 會出現錯誤,使 Docker Engine 無法啟動。
安裝完成後,透過 wsl
可以看到以下資訊:
C:\Users\Webber>wsl --list
Windows 子系統 Linux 版發佈:
docker-desktop (預設)
docker-desktop-data
docker-desktop 是用於執行 Docker engine (dockerd),而 docker-desktop-data 則是用於儲存容器與映像檔,兩者都無法用於一般開發,如果需要在 WSL2 上進行開發,需要安裝一個 Linux 發行版,例如 Ubuntu。
Volumes
建立的 Docker Cotainer 所留下的 Volume 會儲存在實際作業系統的下列路徑:
\\wsl.localhost\docker-desktop-data\data\docker\volumes
Scenario
WordPress & MySQL
參考 vc7 所分享筆記的 compose.yml,並且在結合 phpmyadmin
docker-compose.yml
version: '3.3'
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: admin
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress@
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress@
phpmyadmin:
image: phpmyadmin/phpmyadmin
ports:
- "8080:80"
depends_on:
- db
environment:
PMA_HOST: db
PMA_PORT: 3306
volumes:
db_data:
啟動 docker compose
docker-compose up -d
清除 Volume 資源的方式
docker volume ls
dcoker volume rm wp_db_data
docker volume prune
OWASP Juice
打靶機、練滲透測試不需要大費周章地準備環境了,Docker 起,Image 落,juice-shop 就完成部署了 🙂
docker pull bkimminich/juice-shop
docker run --rm -p 3000:3000 bkimminich/juice-shop
SQL Server On Linux
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=yourStrong(!)Password" -e "MSSQL_PID=Developer" -p 1433:1433 --name sqlpreview --hostname sqlpreview -d mcr.microsoft.com/mssql/server:2022-preview-ubuntu-22.04
參考資料
Windows 10 Home家用版安裝 Hyper-V 與 Docker
Introducing the Docker Desktop WSL 2 Backend | docker
用 Docker Compose 快速生成一個 WordPress 網站(筆記,無細節說明)
容器初體驗 - 搞個 IIS Container 來部署網站
在 WSL 2 上開始使用 Docker 遠端容器 | learn.microsoft
用 Docker 建立不同 Angular CLI 版本的開發環境
時代在變 Docker 要會:台北 Docker 一日入門篇
快速上手 Windows Containers 容器技術 (Docker Taipei)
開發人員不可不知的 Windows Container 容器技術預覽
Windows Container 101: dotNET, Container, Kubernetes
iThome
Container技術三部曲(一)迎接下一個雲端火紅技術Docker