--- title: 【軟體】必學的 Docker tags: TTennis Pickup Robot disqus: hackmd --- <h1 style="text-align: center; color: orange;"> 🛠️ 【軟體】必學的 Docker 🛠️ </h1> <h2 style="text-align: center; color: skyblue;"> Docker 淺談 </h2> <center> > 這篇是給完全不懂 Docker 用途的人看的。 在開發軟體時,環境常常是最容易把人搞瘋的。 這裡環境指的可以是硬體架構(x86、ARM),可以是作業系統(Linux、Windows), 也可以是 Python 版本,也可以是安裝的依賴包們。 例如使用 Lambda 語法的 .cpp 檔案,`C++11` 編譯器可以識別但 `C++ 98/03` 就不行。 那為了確保在其他機台能順利運作,我們就必須確認機器上都有安裝較新版的編譯器。 但實際上,你可能會先遇到編譯器和前版本打架、無法安裝新編譯器、 電腦不支援新版編譯器等等你根本沒想過會卡住的問題。 :::success 而 Docker 正是來解決環境問題的救星。 ::: </center> </br> <h2 style="text-align: center; color: skyblue;"> 超級方便的例子 </h2> <center> 假設今天你想玩 ROS2 Humble, 那你須要準備一台灌 Ubuntu 22.04 OS 的電腦。 接著照做參考官網的[ROS2安裝步驟](https://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debians.html)。 撇除汙染原本環境、可能安裝失敗問題, 安裝過程本身就很繁瑣和耗時。 相反地,Docker 一個指令就結束了: `docker image pull osrf/ros:humble-desktop-full` 而且可在 Windows 、不同 distro 的 Ubuntu 上操作。 </center> </br> <h2 style="text-align: center; color: skyblue;"> Docker 運作方式 </h2> <center> Docker 的功能性類似早期的虛擬機,但性能大大超越。 (這裡不談 Docker 本身的技術) 我們將環境資訊寫在 `Dockerfile` 中,並根據其資訊構建出 Image。 Image 會根據 `Dockerfile` 去安裝依賴項和設定環境變數等。 Image 的執行單位是 Container,且一個 Image 能有多個 Container 實例。 所有的 Container 都是獨立執行的個體,與本機隔離。 <center>  </center> Docker 已經是軟體界的趨勢。 很多平台像是 NVidia、ROS2 等都會建議用 Docker 安裝環境。 * <font color ="yellow"> 部署速度</font>:下載 Docker Image >> 在本地安裝、編譯依賴項。 * <font color ="yellow"> 安全性</font>:Docker Container 是隔離於本地的,可放心做骯髒操作。 * <font color ="yellow"> 開發便利性</font>:不被版本相容性搞瘋,且能輕鬆使用別人寫好的環境。 * <font color ="yellow"> 多元性</font>:你可以在同時有多個 Image,運行各種不同的環境。 </center> </br> </br>
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up