什麼是 Docker?簡單介紹與 Linux 安裝方法全解(1)


3樓貓 發佈時間:2025-01-09 06:19:55 作者:港口的獵人 Language

什麼是docker?

Docker 是一個開源的容器化平臺,可以讓用戶將應用程序及其依賴打包到一個可移植的容器中,運行在獨立於系統的環境中,從而避免對系統本身產生影響。這些容器可以運行在任何支持 Docker 的環境中,無論是本地開發機、雲服務器,還是其他操作系統。

可以理解為Python 虛擬環境,但它們兩個隔離方式不同。

  • Python 虛擬環境 主要用於隔離 Python 依賴庫,以避免不同項目之間的庫衝突。Python 虛擬環境僅限於 Python 環境中的依賴,不影響系統級的庫或應用程序

  • Docker 則是一種更為全面的隔離技術,它通過容器化將應用及其所有依賴(不僅限於 Python)封裝起來,能夠在不同的系統環境中運行

Docker 的主要優點:

  1. 輕量化:容器共享主機操作系統內核,佔用資源少。

  2. 快速啟動:容器啟動速度通常在秒級。

  3. 一致性:無論在開發、測試還是生產環境中,容器的運行結果完全一致。

  4. 強大的生態系統:通過 Docker Hub,用戶可以獲取大量預構建的鏡像。(有能力解決網絡問題的話)

一個簡單的例子

假設你有兩個應用程序,分別依賴 MySQL 5.7MySQL 8.0

  • 應用 A 需要 MySQL 5.7,而我們系統也只有這個版本。

  • 應用 B 則依賴 MySQL 8.0,並且需要使用新版本的特性。

用傳統方法嘗試直接在系統中安裝多個版本的 MySQL,"可能"會遇到版本衝突的問題。降級或升級 MySQL 可能會影響到整個服務器上的其他服務,比較的麻煩,需要一定的動手能力(前提是你有很強的解決問題的能力或者擁有折騰的心)

而如果用docker,可以為應用 B 創建一個的容器,並在這個容器中運行 MySQL 5.7,從而確保不同版本的 MySQL 互不干擾這種方式完全隔離了每個版本,避免了全局版本衝突

安裝docker

  • 安裝必要的依賴包

    • sudo apt install apt-transport-https ca-certificates curl software-properties-common

  • 由於我不知道國內源有沒有被限制,這裡添加Docker 的官方 GPG 密鑰

    • curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

  • 添加 Docker 倉庫

    • echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

    • sudo apt update

  • 安裝 Docker

    • sudo apt install docker-ce

  • 啟動並啟用 Docker 服務

    • sudo systemctl start docker

      sudo systemctl enable docker

演示

我的電腦沒有安裝 Python,但我想通過 Docker 來運行 Flask 應用

這是我的目錄:

什麼是 Docker?簡單介紹與 Linux 安裝方法全解(1)-第0張

內容:

什麼是 Docker?簡單介紹與 Linux 安裝方法全解(1)-第1張

Dockerfile文件

什麼是 Docker?簡單介紹與 Linux 安裝方法全解(1)-第2張

app.py

什麼是 Docker?簡單介紹與 Linux 安裝方法全解(1)-第3張

這個requirement是我隨便在網上抄的

構建 一個Docker 鏡像

  • sudo docker build -t flask .

    • docker build : Docker 的一個命令,用來根據當前目錄中的 Dockerfile 創建(構建)一個 Docker 鏡像。這個命令會執行 Dockerfile 中定義的步驟(例如安裝依賴、複製文件等),然後生成一個鏡像

    • -t flask : 給鏡像命名為 flask

    • . : 指定當前目錄作為構建上下文,Docker 會在這個目錄查找 Dockerfile 和其他文件

什麼是 Docker?簡單介紹與 Linux 安裝方法全解(1)-第4張

構建成功

運行 Docker 容器

  • sudo docker run -d -p 5000:5000 flask

    • run : 運行容器,根據後面怎麼定義

    • -d : 將容器後臺運行著,不用麻煩手動再創一個終端 

    • -p 5000:5000:將容器的 5000 端口映射到宿主機的 5000 端口

    • flask : 鏡像的名稱

什麼是 Docker?簡單介紹與 Linux 安裝方法全解(1)-第5張

接下來我們局域網訪問flask,輸入服務器ip和端口5000

什麼是 Docker?簡單介紹與 Linux 安裝方法全解(1)-第6張

成功訪問


© 2022 3樓貓 下載APP 站點地圖 廣告合作:asmrly666@gmail.com