
- Docker 教程
- Docker - 首頁
- Docker - 概覽
- Docker - 在 Linux 上安裝
- Docker - 安裝
- Docker - Hub
- Docker - 映象
- Docker - 容器
- Docker - 倉庫
- Docker - Compose
- Docker - 使用容器
- Docker - 架構
- Docker - 層
- Docker - 容器和主機
- Docker - 配置
- Docker - 容器和 Shell
- Docker - Dockerfile
- Docker - 構建檔案
- Docker - 公共倉庫
- Docker - 管理埠
- Docker - Web 伺服器
- Docker - 命令
- Docker - 容器連結
- Docker - 資料儲存
- Docker - 卷
- Docker - 網路
- Docker - 安全性
- Docker - 工具箱
- Docker - 雲
- Docker - 構建雲
- Docker - 日誌
- Docker - 持續整合
- Docker - Kubernetes 架構
- Docker - Kubernetes 的工作原理
- Docker - 生成式 AI
- Docker - 託管
- Docker - 最佳實踐
- Docker 設定服務
- Docker - 設定 Node.js
- Docker - 設定 MongoDB
- Docker - 設定 NGINX
- Docker - 設定 ASP.Net
- Docker - 設定 MySQL
- Docker - 設定 Go
- Docker - Rust 設定
- Docker - 設定 Apache
- Docker - 設定 MariaDB
- Docker - 設定 Jupyter
- Docker - 設定 Portainer
- Docker - 設定 Rstudio
- Docker - 設定 Plex
- Docker 設定 - Flame
- Docker 設定 - PostgreSql
- Docker 設定 - Mosquitto
- Docker 設定 - Grafana
- Docker 設定 - Nextcloud
- Docker 設定 - Pawns
- Docker 設定 - Ubuntu
- Docker 設定 - RabbitMQ
- Docker - 設定 Python
- Docker - 設定 Java
- Docker - 設定 Redis
- Docker - 設定 Alpine
- Docker - 設定 BusyBox
- Docker 設定 - Traefik
- Docker 設定 - WordPress
- Docker 有用資源
- Docker - 快速指南
- Docker - 有用資源
- Docker - 討論
Docker - Rust 設定
Rust 是一種通用程式語言,提供記憶體安全、併發性和高效能。記憶體安全保證所有引用始終指向有效記憶體;但是,此記憶體沒有垃圾回收器。為了同時強制執行記憶體安全並防止資料競爭,它的“借用檢查器”在編譯期間跟蹤程式中所有引用的物件生命週期。
Docker 另一方面,是一個用於在容器中開發、交付和執行應用程式的平臺。它提供了一種將應用程式及其依賴項打包到一個單元中的方法。這保證了在不同環境中執行應用程式的一致性。
為什麼要將 Rust 應用程式 Docker 化?
- 可移植性 - 它允許您將 Rust 應用程式及其依賴項打包到一個容器中,從而使其易於在不同的系統上部署和執行。
- 隔離 - 容器提供沙盒環境以避免不同應用程式之間的衝突。
- 可重複性 - 使用相同的 Docker 映象,您可以輕鬆地複製和擴充套件應用程式例項及其環境配置。
- 效率 - 由於 Docker 容器可以非常快速地啟動和關閉,因此它們在微服務架構中非常有用。
Docker 化 Rust 的先決條件
在開始之前,請確保您已安裝以下內容 -
- Rust - 您可以從 https://www.rust-lang.org/ 下載並安裝 Rust 編譯器。
- Docker - 您可以從 https://www.docker.com/ 下載並安裝 Docker Desktop 或 Docker Engine。
- 程式碼編輯器 - 您可以選擇自己喜歡的程式碼編輯器,例如 Visual Studio Code、IntelliJ IDEA 或 Vim。
設定 Rust 核心專案
- 啟動您的終端或命令提示符。
- 導航到所需的目錄。
- 使用 cargo new 命令建立一個新的 Rust 專案。
$ cargo new my-rust-app

執行此命令時,它將建立一個名為 my-rust-app 的新目錄,其中包含基本的 Rust 專案結構。
專案結構
此專案目錄將具有以下結構 -
my-rust-app/ ├── Cargo.toml └── src └── main.rs
Cargo.toml - 此檔案包含有關您的專案的資訊,包括依賴項和版本資訊。
src/main.rs - 這是您將在其中編寫 Rust 程式碼的主要原始檔。
新增基本的 Rust 程式
讓我們為演示目的建立一個基本的 Rust 程式。您可以開啟 src/main.rs 檔案並將內容替換為以下程式碼 -
fn main() { println!("Hello, world!"); }
當我們執行這個簡單的程式時,它只是將“Hello, world!”列印到控制檯。
在本地執行 Rust 專案
要在本地執行專案,您可以導航到專案目錄並執行以下命令 -
$ cargo run

執行上述命令後,它將編譯 Rust 程式碼並執行可執行檔案。您可以在終端中看到輸出“Hello, world!”。
建立 Dockerfile
正如我們在前幾章中討論的那樣,Dockerfile 是一個文字檔案,其中包含構建 Docker 映象的說明。在這裡,我們定義基本映象、依賴項以及建立可執行容器所需的所有命令。
建立新的 Dockerfile
在 Rust 專案的根目錄中建立一個名為 Dockerfile 的新檔案。
定義基本映象
對於 Rust 應用程式,一個流行的選擇是 rust:alpine 映象。它提供了一個輕量級的 Alpine Linux 環境,其中包含 Rust 編譯器和標準庫。
將基本映象新增到您的 Dockerfile 中 -
FROM rust:alpine
複製專案檔案
下一個指令是將專案目錄的內容複製到容器中 -
COPY . /app
此指令將複製整個專案,包括 Cargo.toml 檔案和 src 目錄,到容器內的 /app 目錄。
設定工作目錄
將工作目錄設定為 /app 目錄 -
WORKDIR /app
構建 Rust 應用程式
下一個指令是執行 cargo build 命令來構建您的 Rust 應用程式
RUN cargo build --release
此指令將幫助您以釋出模式編譯 Rust 程式碼,從而最佳化其效能。
公開埠(可選)
如果您的應用程式偵聽特定埠,您可以公開它 -
EXPOSE 8080
您可以將 8080 替換為您的應用程式使用的實際埠。
定義入口點
您現在可以指定容器啟動時要執行的命令 -
ENTRYPOINT ["target/release/your-app-name"]
請將 your-app-name 替換為您編譯的 Rust 可執行檔案的實際名稱。
完整的 Dockerfile 示例
FROM rust:alpine COPY . /app WORKDIR /app RUN cargo build --release EXPOSE 8080 ENTRYPOINT ["target/release/my-rust-app"]
將上面的內容複製到您的 Dockerfile 中。
構建 Rust Docker 映象
既然您已經建立了 Dockerfile,就可以構建 Rust Docker 映象了。
構建映象
啟動您的終端或 cmd 並導航到您的專案目錄。
執行以下 docker build 命令 -
$ docker build -t my-rust-app .
"-t my-rust-app" - 命令的這部分指定了 Docker 映象的標籤。您可以將 my-rust-app 替換為您想要的任何名稱。
".": 這個點表示 Dockerfile 位於當前目錄中。

驗證映象
如果您想驗證映象是否已成功構建,可以透過執行以下命令列出所有 Docker 映象 -
$ docker images

您可以在列表中看到我們新建立的 my-rust-app 映象。
將映象推送到倉庫(可選)
如果您想與他人共享 Docker 映象或將其部署到生產環境,可以輕鬆地將其推送到 Docker 倉庫(如 Docker Hub、Amazon ECR 或 Google Container Registry)。
例如,要將您的映象推送到 Docker Hub,您需要建立一個 Docker Hub 帳戶並登入 -
$ docker login
然後,您可以將映象推送到您的 Docker Hub 倉庫 -
$ docker push your-docker-hub-username/my-rust-app
您可以將 your-docker-hub-username 替換為您實際的 Docker Hub 使用者名稱。
執行 Rust Docker 容器
現在您已經準備好 Rust 應用程式的 Docker 映象,可以將其作為容器運行了。
執行容器
$ docker run -p 8080:8080 my-rust-app
-p 8080:8080 - 此標誌可幫助您將主機上的 8080 埠對映到容器內的 8080 埠。
my-rust-app - 它指定了 Docker 映象的名稱。

其他命令
列出正在執行的容器
docker ps
停止容器
docker stop <container_id>
刪除容器
docker rm <container_id>
刪除映象
docker rmi <image_id>
按照這些步驟操作後,您已成功將 Rust 應用程式 Docker 化,現在可以將其部署到不同的環境中。
結論
在本章中,我們學習瞭如何將 Rust 應用程式 Docker 化。首先,我們在 Rust 中建立了一個簡單的專案,然後建立了一個 Dockerfile 來定義其中包含的內容以及映象的配置方式。然後,構建 Docker 映象並最終在 Docker 容器中執行它。
作為您開發旅程的下一步,您可以學習高階 Docker 主題,例如多階段構建、Docker Compose 和其他容器編排工具(如 Kubernetes)。
關於 Docker 化 Rust 應用程式的常見問題
關於 Docker 化 Rust 應用程式,有一些非常常見的問題 (FAQ),本節嘗試簡要回答它們。
1. 如何在 Docker 化的 Rust 應用程式中處理依賴項?
使用 cargo 管理 Rust 專案的依賴項。cargo.lock 檔案將依賴項鎖定到特定版本,這將確保構建的一致性。建立 Docker 映象時,cargo 命令將自行解析依賴項並下載它們。
2. Docker 化 Rust 應用程式的最佳實踐是什麼?
首先是使用應用程式所需的最小基本映象,透過傳遞環境變數最佳化構建過程,以及利用多階段構建。出於安全考慮,請考慮使用非 root 使用者,並使用 .dockerignore 檔案排除不必要的檔案。
3. 如何提高 Docker 化的 Rust 應用程式的效能?
透過最佳化基本映象和編譯應用程式的釋出二進位制檔案,使 Docker 化的 Rust 應用程式非常快速。對其進行分析以揭示應用程式的瓶頸。除此之外,還可以嘗試不同的 Docker 映象層和構建快取方法。