一、安裝和配置 Docker
1.安裝 Docker
官網鏈接:https://www.docker.com/
以Debian(Ubuntu)系統為例:
#安裝依賴包
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg lsb-release#添加 Docker 官方 GPG 密鑰
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg#設置 Docker 的 APT 源
echo \"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null#安裝 Docker Engine
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin#啟動 Docker 并設置開機自啟
sudo systemctl enable --now docker#驗證 Docker 是否安裝成功
sudo docker run hello-world
2.加速器配置(可選):
(1)創建或編輯 Docker 配置文件:
sudo mkdir -p /etc/docker
sudo vim /etc/docker/daemon.json
(2)添加加速器地址:
在 daemon.json 文件中添加以下內容(以毫秒鏡像等為例):
{"registry-mirrors": ["https://docker.1ms.run","docker.xuanyuan.me","https://docker.mirrors.ustc.edu.cn"]
}
阿里云:登錄阿里云容器鏡像服務,進入“鏡像加速器”頁面,獲取專屬加速器地址。
(3)重啟 Docker 服務:
sudo systemctl daemon-reload
sudo systemctl restart docker
(4)驗證加速是否生效
docker pull hello-world
如果加速器配置正確,鏡像拉取速度會明顯提升。
3.安裝 buildx 插件:
Buildx 支持為不同的平臺和架構構建鏡像,例如同時構建適用于 linux/amd64 和 linux/arm64 的鏡像。19.03版本后的docker會自帶buildx。
查看docker版本:docker --version
4.安裝 QEMU
QEMU 是一個硬件虛擬化工具,用于模擬不同架構的 CPU。
運行以下命令安裝 QEMU:
docker run --privileged --rm tonistiigi/binfmt --install all
這會安裝所有支持的 QEMU 架構,包括 ARM 和 x86。
二、構建鏡像
1.編寫 Dockerfile
# 使用基礎的 Linux 發行版鏡像
FROM ubuntu:20.04# 安裝必要的工具
RUN apt-get update && \apt-get install -y tzdata && \ln -fs /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \dpkg-reconfigure --frontend noninteractive tzdataRUN apt-get install -y \build-essential \gcc \binutils \gdb \nasm \vim# 設置工作目錄
WORKDIR /workspace# 指定容器啟動時運行的命令
CMD ["/bin/bash"]
2.構建鏡像
使用 docker buildx build 命令構建鏡像,指定目標平臺為 ARM 和 x86:
docker buildx build --platform linux/arm64 -t asm-arm64:v1.0 .
docker buildx build --platform linux/amd64 -t asm-amd64:v1.0 .# 多平臺鏡像:
docker buildx build --platform linux/amd64,linux/arm64 -t asm_arm64_amd64:v1.0 .
? --platform 參數指定了目標平臺為 x86_64 和 ARM64。
? -t 參數為鏡像設置標簽。
3.運行鏡像
# 在 x86 架構上運行
docker run -it -v ~/asm/x86:/workspace --platform linux/amd64 asm-amd64:v1.0# 在 ARM 架構上運行
docker run -it -v ~/asm/arm:/workspace --platform linux/arm64 asm-arm64:v1.0
? -it:以交互模式運行容器,進入容器內部
? -v ~/asm/arm:/workspace:將~/asm/arm目錄掛載到容器的/workspace上
? 輸入exit或Ctrl D鍵退出
4.運行容器
# 查看容器
docker ps -a# 啟動容器
docker start <container_id># 連接到容器
docker exec -it <container_id> /bin/bash