⚡ Linux Debian 安装与配置 Docker

🐧 Linux Debian 安装与配置 Docker


📦 1. Docker 简介

Docker 是一个开源的应用容器引擎,它允许开发者将应用及其依赖打包到一个标准化的镜像中,然后在任何地方快速部署和运行。

Docker 利用了 Linux 的 容器技术(Namespaces 和 Cgroups) 来实现资源隔离,它相比传统虚拟机更轻量、更高效。Docker 支持微服务架构,适合用于持续集成 / 持续部署(CI/CD)流程中。


⬇️ 2. Docker 的下载安装

🧹 2.1 卸载旧版 Docker

执行以下命令卸载旧版 Docker

shell 复制代码
sudo apt remove docker docker-engine docker.io containerd runc

🔧 2.1 安装依赖

执行以下命令更新软件源并安装依赖

shell 复制代码
sudo apt update
sudo apt install -y ca-certificates curl gnupg lsb-release

💡 -y 参数表示自动接受所有提示。

🔐 2.3 添加 Docker GPG 公钥

执行以下命令添加公钥

shell 复制代码
sudo mkidr -p /etc/apt/keyrings
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/debian/gpg | \
  sudo gpg --dearmor -o /etc/apt/leyrings/docker.gpg 

⚠️ 这里使用阿里云的镜像,避免因国内网络限制无法访问官方 GPG 公钥。

🧭 2.4 添加 Docker 软件源

执行以下命令添加 Docker 软件源

shell 复制代码
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
  https://mirrors.aliyun.com/docker-ce/linux/debian \
  $(lsb_release -cs) stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

⚠️ 使用国内源(阿里云)避免官方镜像不稳定或下载失败。

📥 2.5 安装 Docker

执行以下命令安装 Docker

shell 复制代码
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plug

⚙️ 2.6 配置 Docker 服务

执行以下命令开启 Docker 服务并设置为开机自启服务

shell 复制代码
sudo systemctl start docker
sudo systemctl enable docker

✅ 2.7 验证安装

执行以下命令验证 Docker 是否成功安装

shell 复制代码
docker version
sudo docker run hello-world

⚠️本安装流程只适用于 Debian 版本的 Linux 系统,如果是 CentOS 或 Ubuntu 按照本流程安装不出意外的话会报错。其实 CentOS 和 Ubuntu 的流程整体差不多,就改一下GPG公钥和镜像源就行了。


⚙️ 3. Docker 的配置

🔁 3.1 配置镜像加速器

再没有任何配置的情况下,docker pull 是 100% 会失败的(docker run 需要 pull 的镜像也会失败)。

编辑配置文件 /etc/docker/daemon.json(如果不存在则创建):

bash 复制代码
sudo mkdir -p /etc/docker
sudo nano /etc/docker/daemon.json

添加以下内容

json 复制代码
{
  "registry-mirrors": [
    "https://docker.m.daocloud.io",
    "https://docker.xuanyuan.me"
  ]
}

保存后执行以下命令应用配置并重启 Docker 服务:

bash 复制代码
sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl restart docker

🌐 3.2 设置 HTTP/HTTPS 代理

docker search 命令默认不会使用镜像加速器,而是通过终端直接访问 Docker Hub 的 API。

所以会出现即使你配置了镜像加速器,并且开启了网络代理(不仅开了KDE的,连终端的也开了),还是 dockers search 失败的情况。

所以我们需要为 Docker 服务设置系统级代理,先创建相关的配置文件

复制代码
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo vim /etc/systemd/system/docker.service.d/http-proxy.conf

在 http-proxy.conf 中写入以下内容(以本地 Clash 代理端口为例):

ini 复制代码
[Service]
Environment="HTTP_PROXY=http://127.0.0.1:7890"
Environment="HTTPS_PROXY=http://127.0.0.1:7890"

然后重启服务让配置生效:

bash 复制代码
sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl restart docker

⚠️docker search 命令成功运行还有一个前提条件,就是你的网络代理软件能正常工作。我这里用的是 Clash 作为网络代理,Clash相关的配置和使用方法详见
Linux Debian 安装与配置 Clash (没过审在我的垃圾箱里)


🛠️ 4. Docker 的基本用法

📦 镜像相关命令

命令 说明
docker search <关键字> 从 Docker Hub 搜索镜像(注意需设置代理)
docker pull <镜像名> 拉取远程镜像到本地
docker images 查看本地已有的镜像
docker rmi <镜像ID或镜像名> 删除本地镜像

🧱 容器相关命令

命令 说明
docker run -it <镜像名> /bin/bash 基于镜像启动容器,并进入交互式终端
docker ps 查看当前运行的容器
docker ps -a 查看所有容器(包括停止的)
docker stop <容器ID或容器名> 停止正在运行的容器
docker start <容器ID或容器名> 启动已存在但停止的容器
docker rm <容器ID或容器名> 删除指定容器

🧰 其他常用命令

命令 说明
docker exec -it <容器ID或容器名> /bin/bash 在运行中的容器中执行命令(常用于进入容器)
docker logs <容器ID或容器名> 查看容器日志输出
docker inspect <容器ID或镜像名> 获取容器或镜像的详细元信息

⚠️ 5. 注意事项

❌ WSL1 限制导致 Docker 无法运行

如果在 2.7 验证安装 的时候出现以下报错:

复制代码
docker: permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Head "http://%2Fvar%2Frun%2Fdocker.sock/_ping": 
dial unix /var/run/docker.sock: connect: permission denied

说明你在使用 WSL1 的系统, WSL1 本身无法运行 Docker 守护进程。建议使用 Windows 安装 Docker Desktop,或升级为 WSL2。

🐛 Linux 版本问题

如果在 2.5安装 docker 的时候出现以下报错:

复制代码
E: The repository 'https://download.docker.com/linux/debian jammy Release' does not have a Release file.

说明系统不是 Debian,而可能是 Ubuntu(如 jammy 是 Ubuntu 22.04 的代号)。请确认 2.3 添加 Docker GPG 公钥2.4 添加 Docker 软件源 中添加的 GPG 公钥和软件源是否为 Debian 的版本。

🌐 Docker 镜像失效

如果在 2.7 验证安装 的时候出现以下报错:

shell 复制代码
docker: Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaitin

说明配置的 Docker 镜像失效导致无法连接上 Docker Hub,请检查 /etc/docker/daemon.json 是否配置了有效镜像:

解决方法请参考 3.1 配置镜像加速器

docker search 不使用镜像加速器,直接访问 Docker API,需要配置 HTTP 代理才能正常工作,否则会因被墙而超时。

解决方法请参考 3.2 设置 HTTP/HTTPS 代理

相关推荐
会开花的二叉树37 分钟前
彻底搞懂 Linux 基础 IO:从文件操作到缓冲区,打通底层逻辑
linux·服务器·c++·后端
计算机小手39 分钟前
高效 P2P 文件传输工具:FileSync 利用 WebRTC 技术实现极速安全传输
经验分享·docker·webrtc·开源软件
呼啦啦5611 小时前
【Linux】权限
linux·权限
晨曦5432101 小时前
零基础12周精通Linux学习计划
linux
linux修理工2 小时前
n1 Armbian OS 24.11.0 noble 安装suricata
linux·运维·服务器
傅里叶2 小时前
sudo启动Flutter程序AMD初始化失败
linux·flutter
笨鸟贤妃2 小时前
Ubuntu 22.04 安装 Docker & Compose 最新最简单完整指南
ubuntu·docker·compose
bug攻城狮2 小时前
CentOS 7 出现 “Could not resolve host“ 错误的修复方案
linux·运维·centos
feifeigo1232 小时前
CentOS系统管理:useradd命令的全面解析
linux·运维·centos
感哥2 小时前
Docker存储
docker