如何在 Linux 上構建自己的 Docker 鏡像

您是否曾經想過構建自己的Docker鏡像?事實證明,使用“Dockerfile”就可以。在本指南中,我們將介紹如何構建您自己的 Docker 映像。

如何在 Linux 上安裝 Docker

在嘗試構建新映像之前,您需要在 Linux 服務器上安裝 Docker。值得慶幸的是,docker 很容易安裝在各種 Linux 操作系統上。在本指南中,我們將重點關注 Ubuntu、Debian、Arch Linux、Fedora 和OpenSUSE。

要安裝 Docker,請打開一個終端。打開後,即可開始安裝。請按照下面列出的與您使用的 Linux 操作系統相匹配的安裝說明進行操作。

Ubuntu/Debian

您首先需要更新 Ubuntu/Debian 系統上的軟件索引。為此,請運行下面的apt update命令。

須藤apt更新

您現在必須安裝 HTTPS 傳輸包才能通過 HTTPS 進行安裝。您還需要安裝 Curl 和其他一些軟件包。可以使用apt install命令安裝這些軟件包。

sudo apt install apt-transport-https ca-certificatescurl software-properties-common

安裝完軟件包後,就可以在 Ubuntu/Debian 系統上啟用 Docker GPG 密鑰了。該密鑰可確保在 Ubuntu 上安全地安裝軟件包。

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

啟用 GPG 密鑰後,就可以啟用 Docker 存儲庫了。為此,請在終端中執行以下echo命令。

echo“deb [arch=amd64 簽名者=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) 穩定”| sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

啟用 Docker 存儲庫後,重新運行apt update命令來刷新軟件索引。

須藤apt更新

最後,您可以在 Ubuntu 或 Debian 上安裝您需要的 Docker 軟件包。

sudo apt install docker-ce docker-ce-cli containerd.io

架構Linux

如果您使用 Arch Linux,您只需運行pacman -S命令並安裝“docker”包即可讓 Docker 在您的系統上運行。

sudo pacman -S docker

在 Arch 系統上安裝 Docker 軟件包後,運行以下systemctl命令來啟用該軟件。

sudo systemctl 啟用 docker sudo systemctl 啟動 docker

軟呢帽

讓 Docker 在 Fedora 上運行相當簡單。首先,使用dnf install命令在系統上安裝該軟件。

須藤 dnf 安裝 docker

將軟件包安裝到 Fedora 系統上後,使用 systemd 啟用它。

sudo systemctl 啟用 docker sudo systemctl 啟動 docker

開放SUSE

要讓 Docker 在 OpenSUSE 上運行,您必須添加 Docker 存儲庫。

sudo zypper addrepo https://download.docker.com/linux/opensuse/$(awk -F= '/^VERSION_ID/{print $2}' /etc/os-release)/x86_64/stable docker

接下來,刷新 Zypper 並安裝該軟件。

sudo zypper 刷新

sudo zypper 安裝 docker-ce

最後,使用 systemd 在系統上啟用 Docker。

sudo systemctl 啟用 docker sudo systemctl 啟動 docker

如何選擇基礎鏡像

從 DockerHub 獲取的每個 Docker 映像都是使用基礎映像構建的。因此,您需要為 Docker 容器選擇一個基礎映像。在本指南中,我們將使用 Ubuntu,因為它是兼容性最好的 Linux 操作系統之一。

在本指南中,我們將向您展示如何使用 Ubuntu 22.04 構建 Drupal 10 映像的示例。但是,這些構建指令可以應用於您想要創建的任何內容,從 Web 應用程序到 Python 程序等。

首先,在終端中打開 Nano 文本編輯器。您將使用 Nano 製作您自己的 Dockerfile。

納米-w ~/dockerfile

在 Nano 文本編輯器中,輸入以下代碼以指定您希望使用 Ubuntu。要獲取 Ubuntu 22.04,請指定它。如果您想使用不同版本的 Ubuntu,可以在此處找到信息。

# Use the official Ubuntu base image
FROM ubuntu:22.04

如何設置工作目錄

您必須在 Docker 容器中設置工作目錄。工作目錄是應用程序在容器中部署在 Ubuntu 上的位置。在此示例中,我們將使用 Drupal 10。Drupal 是一個 Web 應用程序,因此我們需要將 WORKDIR 設置為/var/www/html/。

在 Nano 文本編輯器中,按Enter鍵創建一個空格。然後,粘貼以下代碼。

# Set the working directory in the container WORKDIR /var/www/html

如何安裝程序依賴項

您在 Docker 映像中部署的應用程序需要滿足其依賴關係。如果鏡像中沒有安裝正確的依賴項,它將無法工作。我們正在創建基於 Ubuntu 22.04 的 Drupal 10 映像,因此我們必須將所有 Drupal 10 依賴項添加到該文件中。

在 Nano 文本編輯器中,按Enter鍵創建一個空格。然後,粘貼以下代碼。

# Install dependencies RUN apt-get update && apt-get install -y \ apache2 \ php \ libapache2-mod-php \ php-curl \ php-gd \ php-intl \ php-mbstring \ php-mysql \ php-pgsql \ php-xml \ php-zip \ unzip

如何復製程序代碼

該過程的下一步是向您的 Docker 文件提供程序代碼。我們再次使用 Drupal 10 作為示例。因此,我們必須為 Dockerfile 提供下載和解壓 Drupal 10 的方法。

在 Nano 文本編輯器中,按Enter鍵創建新行。然後,添加以下代碼,以便您的 Dockerfile 可以下載 Drupal 10。

# Download and install Drupal RUN wget https://ftp.drupal.org/files/projects/drupal-10.2.tar.gz && \ tar -xvf drupal-10.2.tar.gz && \ mv drupal-10.2 .

如何公開端口

每次部署 Docker 容器時,它都會訪問端口。例如,如果您運行默認的 Syncthing 容器,它會公開端口 8384。Nextcloud?端口 8080 和 80。您的容器需要公開正確的端口才能正常工作。

首先,找出您正在部署的程序需要訪問哪些端口。在此示例中,我們正在部署 Drupal 10。由於 Drupal 10 是用於 Web 服務器的 CMS 系統,因此它需要端口 80。因此,在 Nano 文本文件中,我們公開端口 80。

# Expose the Drupal port EXPOSE 80

如何設置默認命令

您需要在 Dockerfile 中設置默認命令,以便在構建和部署映像時,它會自動開始運行程序。在我們的示例中,我們希望 Drupal 10 在部署容器後立即啟動,因此我們需要向 Dockerfile 添加啟動命令。

在 Nano 文本編輯器中,按Enter鍵在文件中創建一個新空間。然後,粘貼以下代碼。

# Start Apache in the foreground CMD ["apache2ctl", "-D", "FOREGROUND"]

將最後一段代碼添加到文件後,按Ctrl + O保存它,然後使用Ctrl + X退出 Nano 文本編輯器。Dockerfile 應類似於以下代碼。

注意:這是一個 Dockerfile 示例。您可以使用 Drupal 示例作為參考,為您想要的任何應用程序創建自己的示例。

FROM ubuntu:22.04

# Set the working directory
WORKDIR /var/www/html

# Install dependencies
RUN apt-get update && apt-get install -y \
apache2 \
php \
libapache2-mod-php \
php-curl \
php-gd \
php-intl \
php-mbstring \
php-mysql \
php-pgsql \
php-xml \
php-zip \
unzip


# Download and install Drupal
RUN wget https://ftp.drupal.org/files/projects/drupal-10.2.tar.gz && \
tar -xvf drupal-10.2.tar.gz && \
mv drupal-10.2 .


# Expose the Drupal port
EXPOSE 80

# Start Apache in the foreground
CMD ["apache2ctl", "-D", "FOREGROUND"]

如何建立形象

要使用您創建的 Dockerfile 構建新的 Docker 映像,請輸入以下docker build命令。

sudo docker build -t my-docker-image 。

上面的命令將構建您的 Docker 鏡像。

如何部署鏡像

要將新映像部署到容器中,您需要使用docker run命令。例如,要在端口 80 上運行新建的 Drupal 10 Ubuntu 映像,請執行以下操作。

sudo docker run -d --name my-drupal-container -p 80:80 my-docker-image

留下評論

Fix Screen Tearing on Intel Graphics in Pardus Linux: A Result-Focused Guide

Fix Screen Tearing on Intel Graphics in Pardus Linux: A Result-Focused Guide

Fix Intel graphics screen tearing in Pardus Linux by checking X11 vs. Wayland, compositor settings, refresh rate, active Xorg driver, and TearFree only when appropriate.

如何使用 firewall-cmd 設定 SLES 15 防火牆

如何使用 firewall-cmd 設定 SLES 15 防火牆

在 SLES 15 上設定 firewalld:檢查區域、允許服務或連接埠、儲存永久規則、安全重新載入並驗證存取。

SLES 線上修補程式配置指南:無需重新啟動即可套用核心更新

SLES 線上修補程式配置指南:無需重新啟動即可套用核心更新

在 SLES 15 SP7 上啟用核心即時修補,無需重新啟動即可應用支援的修復程序,驗證活動補丁,並了解何時仍需要重新啟動核心。

如何在 SUSE Linux Enterprise Server 15 上啟用 FIPS 模式

如何在 SUSE Linux Enterprise Server 15 上啟用 FIPS 模式

使用 SUSE 支援的設定公用程式在 SLES 15 上啟用 FIPS 模式,安全重啟,驗證核心和加密策略狀態,並檢查認證限制。

如何在不違反安全策略的情況下在 Gooroom OS 上安裝 Google Chrome

如何在不違反安全策略的情況下在 Gooroom OS 上安裝 Google Chrome

使用官方 .deb 軟體包、APT、策略檢查、更新指南和受管設備修復程序,安全地在 Gooroom OS 上安裝 Google Chrome。

如何安全地將SLES系統日誌匯出到遠端Syslog伺服器

如何安全地將SLES系統日誌匯出到遠端Syslog伺服器

使用 rsyslog、TLS 憑證、對等名稱驗證、佇列、驗證和測試,安全地將 SLES 系統日誌轉送到遠端 syslog 伺服器。

SLES 15 Active Directory 與 SSSD 整合:逐步指南

SLES 15 Active Directory 與 SSSD 整合:逐步指南

使用 YaST 將 SLES 15 加入到具有 SSSD 的 Active Directory。準備 DNS 和時間,配置網域登錄,驗證 Kerberos,並比較 SSSD、Winbind 和 realmd。

修正 Pardus Linux 系統上的 Realtek RTL8821CE Wi-Fi 驅動程式問題

修正 Pardus Linux 系統上的 Realtek RTL8821CE Wi-Fi 驅動程式問題

透過檢查內建的 rtw88 驅動程式、Realtek 韌體、rfkill、NetworkManager 和安全性回退選項來修復 Pardus Linux 上的 RTL8821CE Wi-Fi。

修正 Debian 12 中 systemd-resolved 導致的「DNS 解析暫時失敗」問題

修正 Debian 12 中 systemd-resolved 導致的「DNS 解析暫時失敗」問題

使用 systemd-resolved 診斷和修復 Debian 12 DNS 解析失敗,包括 resolv.conf、NetworkManager、networkd、快取和驗證。

如何安全地在 Windows 11 系統上安裝 Pardus Linux 雙系統

如何安全地在 Windows 11 系統上安裝 Pardus Linux 雙系統

在 Windows 11 旁邊安裝 Pardus 25.2,方法是備份、縮小 Windows 磁碟區、啟動 UEFI USB 並保護現有的 EFI 和復原分割區。