其實,現在各大雲端廠商都在使用 Docker 這個技術喔!!!
Docker 簡介
還記得帶我的學長曾說過: 「沒裝過十次以上的作業系統,是學不會架設伺服器的。」
沒想到時代變遷得很快,現在要架設伺服器的門檻降低很多,效率卻提升非常多。很多複雜的動作,到了現在只要簡短幾個步驟就能完成。
過去要使用 VMware 或是 VirtualBox 建置虛擬機器 (Virtual machine),虛擬機器要將安裝作業系統的過程完整跑一次,運作時,由於是跑獨立的作業系統,也較為耗費系統資源。
Docker 建置的虛擬環境則稱為容器 (Container),可以想成是將內部的應用程式用特殊方法放在主作業系統上的技術,好處是較為輕量化,建置非常快速,目前也成為 Container 界的主流 (Container 技術也曾經過一番廝殺,Docker 脫穎而出)。
另一方面, Docker 也可以將現成的 container 狀態保存下來,成為 image,以便於後續散佈/建置/使用等。
進階一點的還有 Kubernetes 自動佈署的機制,不過就不在本文章討論範圍。
優點
- Image 輕量化
- 系統資源輕量化 ( Memory/ CPU/ Disk )
- 自動化佈署容易 ( Docker hub/ Docker image/ Docker compose )
- 佈署彈性
使用時機
最常用到的時候便是需要一個乾淨的開發環境時,可以在幾分鐘內建置一個乾淨的 Ubuntu 作業系統進行開發,對後續 Debug, 版本控制等都非常實用。
- 需要一個獨立的 Linux 系統進行測試
- 需要別人安裝好的現成伺服器
- 專案管理需要良好的「建置環境/伺服器」版本控制
- 其他管理需求
安裝與使用
至官網安裝教學下載連結檔案,原則上 Docker desktop 是圖形介面,安裝之後,系統也可以透過docker
指令操作。
安裝檔案下載
- Windows版本: https://desktop.docker.com/win/stable/Docker Desktop Installer.exe
- MacOS版本: https://desktop.docker.com/mac/stable/Docker.dmg
- 其他 Linux: 沒有圖形介面,僅供指令操作,安裝方式根據作業系統而不同。
Docker desktop 軟體介面
Docker desktop 的功能其實並不算完整,但拿來看資訊還算好看,且做簡單的操作(開機/關機/刪除)等算方便,主要操作還是會以指令方式。
顯示目前所有image
顯示 image 細部內容
顯示目前所有 container
顯示 container 的使用狀態
常用指
因工作需求,常常需要開一個 Docker container 進行各種操作,很多指令跟操作方式常常忘記,所以特別筆記下來:
image 操作
顯示 image
本指令可以直接用 Docker desktop 取代
docker images
顯示結果如下:
下載 image
docker pull ubuntu:21.04
下載在 DockerHub 上面現成的 image
匯出 image
docker save myimage:latest | gzip > myimage_latest.tgz
其中 myimage:latest 為 image 名稱,通常會使用 gzip 將檔案進行壓縮,myimage_latest.tgz 為我們想要匯出的檔案名稱。
匯入 image
gunzip -c cross.tgz | docker load
假設對方提供給我們一個 myimage_latest.tgz 的壓縮檔,則可透過以下指令,將 image 檔案載入至我們的 docker 中
gunzip
為解壓縮指令,在 Windows 或 Linux 都需要額外安裝。
刪除 image
docker rmi myimage:latest
注意要刪除的 image,不得有 container 引用。
container 操作
建置 container
本指令無法直接用 Docker desktop 取代,因為若干參數無法通過 desktop 直接設定
docker run -itd --name test --hostname test -v ~:/home/ubuntu -p 8080:18080 ubuntu:21.04
參數說明:
-p
port forwarding
-d
daemon mode
--name
指定 container 名稱,若無指定,系統會自動分配名子
--hostname
指定 container 的 hostname
-v
即 Volumns ,指外部作業系統 (host) 與 container 共用資料夾,其中格式為: host 資料夾位置
:container 資料夾位置
顯示所有 container
本指令可以直接用 Docker desktop 取代
docker ps -a
-a
參數表示顯示所有狀態的 container,若無此參數,則僅會顯示開機的 container
以下為指令結果,會列出ID, 使用的 image 名稱, 狀態等資訊
進入 container 操作
本指令可以直接用 Docker desktop 取代
docker exec -it xxx bash
其中 xxx 為 container 名稱/container ID
關閉 container 操作
本指令可以直接用 Docker desktop 取代
docker stop xxx
其中 xxx 為 container 名稱/container ID
刪除 container 操作
本指令可以直接用 Docker desktop 取代
docker rm xxx
其中 xxx 為 container 名稱/container ID
注意要刪除的 container 必須在關機狀態。
將 container 匯出成 image 檔案
docker save busybox | gzip > busybox.tgz
將 busybox 這個 container 匯出為 busybox.tgx,其中經過gzip 壓縮
注意要匯出的 container (busybox) 必須在關機狀態。
其他問題
Docker 可以建置 Windows container 嗎?
可以,但因為技術問題,僅限 Windows docker desktop 版本,且需要把模式切換為 Windows 模式 (啟動此模式之後,就無法再控制 Linux 版本的 container )
設定方式:
在系統通知欄以右鍵點選 Docker 圖標,選擇『Switch to Windows containers…』
接著使用 Windows docker hub 的 image.
上文提到的 ungzip/gnuzip
參考文獻
- https://docs.docker.com/get-started/
- https://docs.microsoft.com/zh-tw/dotnet/architecture/containerized-lifecycle/what-is-docker
- https://kubernetes.io/
推薦文章
Docker
⭐️ 全民寫程式 | 好用的 Docker 容器 | Docker Desktop 使用教學 | 程式開發最佳輔助工具
⭐️ 全民寫程式 | Dockerfile 使用方式 | Dockerfile usage
⭐️ 全民寫程式 | Docker | Compose 介紹 安裝
⭐️ 全民寫程式 | Docker | Compose | docker compose 指令 | docker compose vs docker-compose
全民寫程式:初學者天堂
⭐️ 全民寫程式 | 這不是必要,但學會 Linux 絕對會讓您更有競爭力
⭐️ 全民寫程式|小網址大學問|IP、Port 介紹|網際網路和區域網路|常用本地網址
⭐️ 全民寫程式|小網址大學問|DNS|域名系統|頂級域名、一級域名是什麼?
全民寫程式:進階
⭐️ 全民寫程式|Oh My Zsh|安裝、主題、插件|終端機優化|終端機美化
⭐️ 全民寫程式 | Python | pyenv-virtualenv 教學(安裝篇)
⭐️ 全民寫程式 | Python | pyenv-virtualenv 教學(介紹篇)
⭐️ WordPress 網站架設大補帖 | 自動化備份系統 | 營運網站實際備份案例分享 | 資料庫備份 | 異地備援
⭐️ WordPress 網站架設大補帖 | WordPress 網站搬移基礎步驟 | WordPress 網站切換域名的方法
⭐️ 【法務】全民寫程式 | 專案管理 | 授權很重要 | 不可不知的 Open Source License | 安全地在巨人肩膀上寫程式
⭐️ 網頁開發 | 降低 Youtube 載入時間 | 提升痞客邦網頁載入速度
留言列表