其實,現在各大雲端廠商都在使用 Docker 這個技術喔!!!

Docker 簡介

還記得帶我的學長曾說過: 「沒裝過十次以上的作業系統,是學不會架設伺服器的。」

沒想到時代變遷得很快,現在要架設伺服器的門檻降低很多,效率卻提升非常多。很多複雜的動作,到了現在只要簡短幾個步驟就能完成。

過去要使用 VMware 或是 VirtualBox 建置虛擬機器 (Virtual machine),虛擬機器要將安裝作業系統的過程完整跑一次,運作時,由於是跑獨立的作業系統,也較為耗費系統資源。

Docker 建置的虛擬環境則稱為容器 (Container),可以想成是將內部的應用程式用特殊方法放在主作業系統上的技術,好處是較為輕量化,建置非常快速,目前也成為 Container 界的主流 (Container 技術也曾經過一番廝殺,Docker 脫穎而出)。

 

image

另一方面, Docker 也可以將現成的 container 狀態保存下來,成為 image,以便於後續散佈/建置/使用等。

進階一點的還有 Kubernetes 自動佈署的機制,不過就不在本文章討論範圍。

 

 

優點

  1. Image 輕量化
  2. 系統資源輕量化 ( Memory/ CPU/ Disk )
  3. 自動化佈署容易 ( Docker hub/ Docker image/ Docker compose )
  4. 佈署彈性

使用時機

最常用到的時候便是需要一個乾淨的開發環境時,可以在幾分鐘內建置一個乾淨的 Ubuntu 作業系統進行開發,對後續 Debug, 版本控制等都非常實用。

  1. 需要一個獨立的 Linux 系統進行測試
  2. 需要別人安裝好的現成伺服器
  3. 專案管理需要良好的「建置環境/伺服器」版本控制
  4. 其他管理需求

安裝與使用

官網安裝教學下載連結檔案,原則上 Docker desktop 是圖形介面,安裝之後,系統也可以透過docker指令操作。

安裝檔案下載

  1. Windows版本: https://desktop.docker.com/win/stable/Docker Desktop Installer.exe
  2. MacOS版本: https://desktop.docker.com/mac/stable/Docker.dmg
  3. 其他 Linux: 沒有圖形介面,僅供指令操作,安裝方式根據作業系統而不同。

Docker desktop 軟體介面

Docker desktop 的功能其實並不算完整,但拿來看資訊還算好看,且做簡單的操作(開機/關機/刪除)等算方便,主要操作還是會以指令方式。

顯示目前所有image

image

顯示 image 細部內容

image

顯示目前所有 container

image

顯示 container 的使用狀態

image

常用指

因工作需求,常常需要開一個 Docker container 進行各種操作,很多指令跟操作方式常常忘記,所以特別筆記下來:

image 操作

顯示 image

本指令可以直接用 Docker desktop 取代

docker images 

顯示結果如下:

image

下載 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 直接設定

image

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

image

-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…』

image

接著使用 Windows docker hub 的 image.

上文提到的 ungzip/gnuzip

參考文獻

  1. https://docs.docker.com/get-started/
  2. https://docs.microsoft.com/zh-tw/dotnet/architecture/containerized-lifecycle/what-is-docker
  3. 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 教學(介紹篇)

⭐️ 全民寫程式|Python|PSD 圖層逐一輸出成圖片

⭐️ WordPress 網站架設大補帖 | 自動化備份系統 | 營運網站實際備份案例分享 | 資料庫備份 | 異地備援

⭐️ WordPress 網站架設大補帖 | WordPress 網站搬移基礎步驟 | WordPress 網站切換域名的方法

⭐️ 【法務】全民寫程式 | 專案管理 | 授權很重要 | 不可不知的 Open Source License | 安全地在巨人肩膀上寫程式

⭐️ 網頁開發 | 降低 Youtube 載入時間 | 提升痞客邦網頁載入速度

⭐️ 網頁開發 | 閱讀進度條實作 | jQuery精簡版

⭐️ 如何把 Google 相簿的圖片鑲嵌在網頁上?|用 Google 相簿做網頁外部圖片

⭐️ 如何在痞客邦文章使用畫質更高的圖片?

⭐️ 痞客邦語法 設定雙欄式列表

arrow
arrow

    採 藥 發表在 痞客邦 留言(2) 人氣()