Más contenido relacionado La actualidad más candente (20) Similar a 讓軟體開發與應用更自由 - 使用 Docker 技術 (20) 讓軟體開發與應用更自由 - 使用 Docker 技術2. 講者
• 邵⽟玉龍 (Allen Shao)
• 網路路暱稱:bestlong
• 在⼿手⼯工具製造公司內擔任資訊⼈人員
• 程式開發、系統維運
• 持續學習探索 DevOps 中
5. 什什麼是 Docker?
• Software Container Platform
• Application delivery technology
• Not VMs
• 比較像是隔離環境與共享資源⽽而不是模擬
• 獨棟房屋 vs 多住⼾戶公寓
Docker is an open platform for developers and sysadmins to
build, ship, and run distributed applications, whether on laptops,
data center VMs, or the cloud.
9. Why docker
• Developer
• 可以解決只在我的電腦可以正常運作的囧況
• 多⼈人協同開發讓開發環境統⼀一
• 新成員快速建置環境
• 經常要切換新舊環境版本
• Operator (System Admin)
• build, ship, test, and deploy apps ⾃自動化
• Enterprise
• DevOps, agile
• cloud-ready, optimal costs
10. Docker Editions
• Docker CE (Community Edition)
• Stable
• Edge
• Docker EE (Enterprise Edition)
• Basic
• Standard
• Advanced
• Moby ?
• https://mobyproject.org/
13. • 三個基本要素
• Image 映像檔
• Container 容器
• Registry (Repostory 倉庫)
• 兩兩個基本必要
• 網路路
• ⾜足夠的硬碟空間
20. Dockerfile 設計原則
• 先求正確建構
• ⼀一個指令⼀一個 RUN
• 再進⾏行行最佳化
• 減少映像檔分層
• ⽤用 && 合併 RUN 指令
• 容量量最⼩小化
• 不需要的檔案不要 ADD (應⽤用 .dockerignore)
• 刪除暫存檔
23. • Windows 開發環境
• ⼿手動安裝
• XAMPP
• WampServer
• AppServ
• 多重開機進入 Linux 環境
• 步驟繁瑣、版本固定
開發 PHP 演進 - 本機
24. 開發 PHP 演進 - 遠端主機
• 在家中或公司架設主機
• Linux ⽤用 telnet, ssh, VNC 連入
• Windows ⽤用遠端桌⾯面連入
• 必須要有網路路
25. 開發 PHP 演進 - 本機VM
• VMware
• VirtualBox
• Vargrant
• ⽤用 vargrantfile ⾃自動化安裝、設定、管理理多個VM
• 虛擬磁碟很佔⽤用空間
• VM 很耗資源,需要較⾼高階的電腦
26. 開發 PHP 演進 - 本機容器
• docker 單⼀一容器全包
• 適合開發與測試,效能差
• docker 多個容器分散架構
• 指令太繁瑣,要對 Docker Network 熟悉
• docker-compose 多容器的管理理⼯工具
• 適合開發與⽣生產環境
• 預設設定檔 docker-compose.yml
• 介紹使⽤用 LaraDock http://laradock.io/
29. 更更⽅方便便的管理理⼯工具
• GUI
• Kitematic (MacOS、Windows) https://kitematic.com/
• WebUI
• Portainer https://portainer.io/
• Shipyard https://shipyard-project.com/
• Rancher http://rancher.com/rancher/
• Kubernetes https://kubernetes.io/
32. 清理理容器
刪除指定執⾏行行中容器 docker rm CONTAINER
刪除全部執⾏行行中容器 docker kill $(docker ps -q)
刪除所有容器 docker rm $(docker ps -aq)
強制刪除所有容器 docker rm -f $(docker ps -aq)
刪除已停⽌止的容器 docker rm $(docker ps -aq -f status=exited)
請⼩小⼼心使⽤用:刪除容器會遺失讀寫層的資料
過濾條件請參參考 https://docs.docker.com/engine/reference/
commandline/ps/#filtering
33. 清理理映像檔
刪除指定映像檔 docker rmi IMAGE
刪除沒有建立容器的映像檔 docker rmi $(docker images -q)
刪除沒有TAG的映像檔 docker rmi -f $(docker images -q -f dangling=true)
過濾條件請參參考 https://docs.docker.com/engine/reference/
commandline/images/#filtering
34. 清理理 Volume
刪除孤兒 volume docker volume rm $(docker volume ls -q -f dangling=true)
強制刪除所有
volume
docker volume rm -f $(docker volume ls -q)
請⼩小⼼心使⽤用:刪除 volume 會遺失資料
過濾條件請參參考 https://docs.docker.com/engine/reference/
commandline/volume_ls/#filtering