软件 Linux Ubuntu 和 Debian 系统安装 Docker 全攻略:步骤、问题与解决方案 Mz Xi 2024-12-30 2025-09-10 准备工作 首先命令行查看自己系统的情况:lsb_release -a
1 2 3 4 Distributor ID: Debian(系统名称) Description: Debian GNU/Linux 11 (bullseye)(详细描述) Release: 11(版本号) Codename: bullseye(版本代号-稳定版)
完成后可尝试根据下方一条命令行安装,目前因为大环境原因建议使用镜像加速地址,即从镜像源安装,比如使用清华大学镜像源或者其他镜像加速地址,文章最下方列出一些常见地址。
注意:在安装依赖包时,可能因为网速或者其他原因较慢的话可以更换源,自行斟酌,谨慎操作。
一、安装 Docker 相关问题 一条命令行安装 Docker Ubuntu
1 curl -fsSL https://get.docker.com -o get - docker.sh && sudo sh get - docker.sh
或者使用官方仓库安装(以下命令可能因权限等问题需要输入密码等操作):
1 sudo apt - update && sudo apt - install - y apt - transport - https ca - certificates curl gnupg2 software - properties - common && curl - fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor - o /usr/share/keyrings/docker - archive - keyring.gpg && 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 && sudo apt - install - y docker - ce docker - ce - cli containerd.io
Debian
使用官方仓库安装(以下命令可能因网络、权限等问题需要适当干预):
1 sudo apt - get update && sudo apt - get install - y apt - transport - https ca - certificates curl gnupg2 software - properties - common && curl - fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor - o /usr/share/keyrings/docker - archive - keyring.gpg && echo "deb [arch=amd64 signed - by = /usr/share/keyrings/docker - archive - keyring.gpg] https://download.docker.com/linux/debian $(lsb_release - cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null && sudo apt - get update && sudo apt - get install - y docker - ce docker - ce - cli containerd.io
Docker 的源(镜像地址) (Ubuntu 和 Debian) :
源的位置 :安装命令中添加的源是 Docker 官方提供的软件仓库。
1 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
1 echo "deb [arch=amd64 signed - by = /usr/share/keyrings/docker - archive - keyring.gpg] https://download.docker.com/linux/debian $(lsb_release - cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
更换源 以阿里云为例,Ubuntu 和 Debian 操作类似:
首先,删除原来的 Docker 官方源文件。在终端中输入:sudo rm /etc/apt/sources.list.d/docker.list
然后,添加阿里云的 Docker 镜像源。创建一个新的源文件,在终端中输入(以 Ubuntu 20.04 “focal” 为例,Debian 版本代号需要根据实际情况修改):
1 echo "deb [arch=amd64] https://mirrors.aliyun.com/docker - ce/linux/ubuntu focal stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
之后,更新软件包列表:sudo apt - get update
。这样就可以使用阿里云的镜像源来安装和更新 Docker 相关软件包了。
从清华大学镜像源安装 Docker 镜像源地址:https://mirrors.tuna.tsinghua.edu.cn/
[tabs] [tab name=”Ubuntu” active=”true”]
更新系统软件包列表:
1 sudo apt - get install - y apt - transport - https ca - certificates curl software - properties - common
1 2 3 sudo rm /etc/apt/sources.list.d/docker.list echo "deb [arch=amd64 signed - by = /usr/share/keyrings/docker - archive - keyring.gpg] https://mirrors.tuna.tsinghua.edu.cn/docker - ce/linux/ubuntu $(lsb_release - cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null curl - fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor - o /usr/share/keyrings/docker - archive - keyring.gpg
1 2 sudo apt - get update sudo apt - get install - y docker - ce docker - ce - cli containerd.io
1 sudo docker run hello - world
[/tab] [tab name=”Debian”]
更新系统软件包列表:
1 sudo apt - get install - y apt - transport - https ca - certificates curl gnupg2 software - properties - common
1 2 3 sudo rm /etc/apt/sources.list.d/docker.list echo "deb [arch = amd64 signed - by = /usr/share/keyrings/docker - archive - keyring.gpg] https://mirrors.tuna.tsinghua.edu.cn/docker - ce/linux/debian $(lsb_release - cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null curl - fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor - o /usr/share/keyrings/docker - archive - keyring.gpg
1 2 sudo apt - get update sudo apt - get install - y docker - ce docker - ce - cli containerd.io
1 sudo docker run hello - world
[/tab] [/tabs]
二、系统依赖包相关问题 依赖包获取位置
解决方法(Ubuntu 和 Debian):
首先从配置的默认软件源获取,软件源信息存储在 /etc/apt/sources.list
和 /etc/apt/sources.list.d/
目录下的文件中。当配置了 Docker 官方仓库后,一些与 Docker 紧密相关的依赖包可能会从 Docker 官方仓库获取。
更换依赖包的源 [tabs] [tab name=”Ubuntu “ active=”true”]
在容器内修改软件源(已经安装docker)
步骤一:进入容器
首先,使用 docker run
命令启动一个容器。例如,启动一个 Ubuntu 容器:docker run -it ubuntu:latest /bin/bash
。这将以交互模式(-it
)启动一个基于 ubuntu:latest
镜像的容器,并进入容器内部的 bash
终端。
步骤二:备份原始软件源文件(可选但推荐)
在容器内,为了防止修改出错,可以先备份原始的软件源文件。对于 Ubuntu 系统,软件源文件是 /etc/apt/sources.list
。使用 cp
命令进行备份,例如:cp /etc/apt/sources.list /etc/apt/sources.list.backup
。
步骤三:编辑软件源文件
使用文本编辑器(如 vi
或 nano
)编辑 /etc/apt/sources.list
文件。例如,使用 nano
编辑器:nano /etc/apt/sources.list
。
清除文件中原有的内容,然后添加你想要的软件源。以使用阿里云的 Ubuntu 软件源为例,添加以下内容:
1 2 3 4 5 6 7 8 deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal - security main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal - security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal - updates main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal - updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal - backports main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal - backports main restricted universe multiverse
这里的 focal
是 Ubuntu 20.04 的版本代号,你需要根据实际使用的 Ubuntu 版本进行修改。
步骤四:更新软件包列表
在容器内运行 apt - get update
命令,使新的软件源生效。这会根据新的软件源更新容器内可安装软件包的列表。
[/tab]
[tab name=”Debian”]
备份原始软件源文件(未安装docker)
打开终端,使用以下命令备份 /etc/apt/sources.list
文件:
1 sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
这一步很重要,因为如果在修改软件源过程中出现问题,你可以通过备份文件恢复原始的软件源配置。
选择合适的软件源
国内软件源 :
阿里云 :其 Debian 软件源格式如下(以 Debian 11 “bullseye” 为例):
1 2 3 4 5 6 deb http://mirrors.aliyun.com/debian/ bullseye main non - free contrib deb - src http://mirrors.aliyun.com/debian/ bullseye main non - free contrib deb http://mirrors.aliyun.com/debian - security/ bullseye - security main non - free contrib deb - src http://mirrors.aliyun.com/debian - security/ bullseye - security main non - free contrib deb http://mirrors.aliyun.com/debian/ bullseye - updates main non - free contrib deb - src http://mirrors.aliyun.com/debian/ bullseye - updates main non - free contrib
清华大学 :清华大学的 Debian 软件源(以 Debian 11 “bullseye” 为例):
1 2 3 4 5 6 deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non - free deb - src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non - free deb https://mirrors.tuna.tsinghua.edu.cn/debian - security/ bullseye - security main contrib non - free deb - src https://mirrors.tuna.tsinghua.edu.cn/debian - security/ bullseye - security main contrib non - free deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye - updates main contrib non - free deb - src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye - updates main contrib non - free
官方软件源 :Debian 官方软件源格式(以 Debian 11 “bullseye” 为例)如下:
1 2 3 4 5 6 deb http://deb.debian.org/debian/ bullseye main deb - src http://deb.debian.org/debian/ bullseye main deb http://security.debian.org/debian - security bullseye - security main deb - src http://security.debian.org/debian - security bullseye - security main deb http://deb.debian.org/debian/ bullseye - updates main deb - src http://deb.debian.org/debian/ bullseye - updates main
修改软件源文件
使用文本编辑器(如 vi
或 nano
)打开 /etc/apt/sources.list
文件。例如,使用 nano
编辑器:
1 sudo nano /etc/apt/sources.list
清除文件中原有的内容,然后添加你选择的软件源。比如,如果你想使用清华大学的软件源,就将上面清华大学软件源的内容复制粘贴进去。
更新软件包列表
保存修改后的 /etc/apt/sources.list
文件,然后在终端运行以下命令更新软件包列表:
这一步会根据新的软件源更新系统可安装软件包的列表。如果在更新过程中出现错误,可能是软件源配置有误,需要检查 /etc/apt/sources.list
文件中的内容是否正确,或者尝试恢复备份文件后重新修改。
[/tab] [/tabs]
三、Docker 服务相关问题
问题 :如何检查 Docker 服务是否正在运行?
解决方法(Ubuntu 和 Debian):
使用 systemctl
命令(适用于 systemd 系统):sudo systemctl status docker
,如果服务正在运行,输出中会包含 active (running)
字样。
或者使用 service
命令(适用于传统的 sysvinit 系统):sudo service docker status
,也会显示服务是否正在运行以及其他相关信息。
问题 :如何启动 Docker 服务?
解决方法(Ubuntu 和 Debian) :
使用 systemctl
(适用于 systemd 系统):
检查状态:sudo systemctl status docker
。
启动服务:sudo systemctl start docker
。
验证启动:sudo systemctl status docker
查看是否显示 active (running)
。
使用 service
(适用于传统 sysvinit 系统):
检查状态:sudo service docker status
。
启动服务:sudo service docker start
。
验证启动:sudo service docker status
查看是否显示服务正在运行。
问题 :如何停止 Docker 服务?
解决方法(Ubuntu 和 Debian) :
使用 systemctl
(适用于 systemd 系统):
检查状态:sudo systemctl status docker
。
停止服务:sudo systemctl stop docker
。
验证停止:sudo systemctl status docker
查看是否显示 inactive (dead)
。
使用 service
(适用于传统 sysvinit 系统):
检查状态:sudo service docker status
。
停止服务:sudo service docker stop
。
验证停止:sudo service docker status
查看是否显示服务未运行。
问题 :如何重启 Docker 服务?
解决方法(Ubuntu 和 Debian) :
使用 systemctl
(适用于 systemd 系统):
检查状态(可选):sudo systemctl status docker
。
执行重启:sudo systemctl restart docker
。
验证重启(可选):sudo systemctl status docker
查看是否显示 active (running)
且启动时间为刚刚重启后的时间。
使用 service
(适用于传统 sysvinit 系统):
检查状态(可选):sudo service docker status
。
执行重启:sudo service docker restart
。
确认重启成功(可选):sudo service docker status
查看是否显示服务正在运行。
四、软件源与 Docker 镜像源混淆相关问题
问题 :修改了软件源后,是否安装 Docker 时直接从软件源获取镜像安装 Docker?不用再修改镜像源?
解决方法 :
软件源主要用于系统软件包安装,Docker 镜像源用于获取 Docker 容器镜像,二者不同。
基于包管理器安装 Docker 时,如果软件源中有 Docker 相关软件包且配置正确,可从软件源获取,但通常系统默认软件源中的 Docker 版本可能不是最新或功能完整的,且可能需要添加 Docker 官方仓库及相关验证信息才能正确安装。使用 Docker 官方脚本安装则直接从官方指定渠道获取,不受系统软件源影响。安装 Docker 后拉取容器镜像还是从 Docker 镜像源获取,修改软件源不会改变这一点,若要加速镜像拉取,需要配置 Docker 镜像加速地址。
问题 :修改了镜像源之后可以直接安装 Docker,不必安装必要依赖包是吗?
解决方法 :
新软件源如果完整包含 Docker 安装所需依赖包且配置正确,可直接获取依赖包安装 Docker。但如果软件源部分包含或不包含依赖包,或存在版本兼容性问题,仍可能需要手动安装缺失的依赖包或进一步配置软件源。
五、其他常见问题 (一)权限问题
问题 :在安装或使用 Docker 过程中出现权限不足的提示怎么办?
解决方法(Ubuntu 和 Debian) :
许多 Docker 操作需要 root 权限。如果在非 root 用户下操作,可以在命令前添加 sudo
来以管理员权限运行命令。例如,运行容器命令 docker run
时如果提示权限不足,可以使用 sudo docker run [容器选项和镜像名称]
。
或者将用户添加到 docker
用户组,这样在一定程度上可以避免频繁使用 sudo
。首先创建 docker
用户组(如果不存在):sudo groupadd docker
,然后将当前用户添加到 docker
组:sudo usermod -aG docker $USER
,最后需要重新登录或者使用 newgrp docker
命令使组权限生效。
(二)容器网络问题
问题 :容器无法访问外部网络或者容器之间无法通信怎么办?
解决方法(Ubuntu 和 Debian) :
检查主机的网络配置和防火墙规则。确保主机能够正常访问外部网络,并且没有阻止容器相关的网络流量。
对于容器之间的通信,确认容器是否在同一网络中。如果没有,可以使用 docker network create
命令创建一个共享网络,然后在启动容器时将容器添加到这个网络中。例如,创建一个名为 my - network
的网络:docker network create my - network
,启动容器并加入该网络:docker run - - network = my - network [容器选项和镜像名称]
。
检查 Docker 的网络模式。默认情况下,Docker 使用桥接网络模式(bridge
),但也可以根据需要使用主机网络模式(host
)或者其他自定义网络模式。如果使用桥接网络模式,可以通过 docker network inspect [网络名称]
(如 docker network inspect bridge
)来查看网络详细信息,包括容器的 IP 分配等情况,以排查网络问题。
(三)镜像拉取和推送问题
问题 :拉取 Docker 镜像时速度很慢或者拉取失败怎么办?
解决方法(Ubuntu 和 Debian) :
配置 Docker 镜像加速地址。在 /etc/docker/daemon.json
文件(如果不存在可以创建)中添加 "registry - mirrors"
字段,并将镜像加速地址添加到该字段下的数组中。例如,使用阿里云镜像加速地址(假设为 https://xxx.mirror.aliyuncs.com
)的配置如下:
1 2 3 4 5 { "registry - mirrors" : [ "https://xxx.mirror.aliyuncs.com" ] }
保存文件后,重启 Docker 服务(参考前面的 Docker 服务重启方法)。
如果拉取失败,可能是镜像名称或标签错误,或者镜像仓库不可用。检查镜像名称和标签是否正确,尝试更换镜像仓库或者等待仓库恢复正常。
问题 :如何推送本地构建的镜像到远程仓库?
解决方法(Ubuntu 和 Debian) :
首先,确保你在远程仓库(如 Docker Hub、阿里云容器镜像服务等)有账号并且已经登录。可以使用 docker login
命令登录远程仓库,按照提示输入用户名和密码(或令牌等凭据)。
给本地镜像添加合适的标签,标签格式通常为 [远程仓库地址/用户名]/[镜像名称]:[标签]
。例如,要将本地镜像推送到 Docker Hub,假设你的用户名是 your - username
,镜像名称是 my - image
,标签是 latest
,可以使用命令:docker tag my - image your - username/my - image:latest
。
最后使用 docker push [远程仓库地址/用户名]/[镜像名称]:[标签]
命令推送镜像。例如:docker push your - username/my - image:latest
。
常见的 Docker 镜像加速地址
阿里云 :登录阿里云账号后,进入容器镜像服务的镜像加速器页面可获取个人专属的加速地址,格式为 https://<你的 id>.mirror.aliyuncs.com
腾讯云 :https://mirror.ccs.tencentyun.com
华为云 :https://<你的华为云专属地址>
(需在华为云控制台获取)。通常格式类似 https://xxxxxx.mirror.swr.myhuaweicloud.com
网易 :http://hub-mirror.c.163.com
七牛云 :https://reg-mirror.qiniu.com
科大镜像 :https://docker.mirrors.ustc.edu.cn/
DaoCloud :https://docker.m.daocloud.io
清华大学 :https://mirrors.tuna.tsinghua.edu.cn/
搜狐镜像 :http://mirrors.sohu.com/
Docker 中国 :https://registry.docker-cn.com
(目前可能不太稳定或已停止服务)
Registry.cyou 系列 :
https://docker.registry.cyou
https://docker-cf.registry.cyou