Ubuntu 环境下搭建 Docker 及常见问题解决方案
一、Docker 简介
Docker 是一个开源的应用容器引擎,开发者可以打包自己的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 或 Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口,能够有效解决 “环境不一致” 的问题,极大提升应用部署和运维效率。
二、Ubuntu 环境下 Docker 安装步骤
1. 更新系统软件包索引
在安装 Docker 之前,首先要确保系统的软件包索引是最新的。打开终端,执行以下命令:
sudo apt update
这个命令会从配置的软件源中下载最新的软件包列表信息,以便后续安装操作能够获取到最新版本的软件包。
2. 安装必要的系统工具
安装 apt-transport-https、ca-certificates、curl、gnupg 和 lsb-release 等工具,这些工具将用于添加 Docker 的软件源和验证软件包的签名,确保安装过程的安全性和可靠性。执行命令如下:
sudo apt install apt-transport-https ca-certificates curl gnupg lsb-release
3. 添加 Docker 官方 GPG 密钥
为了确保从 Docker 官方软件源下载的软件包是经过官方认证且未被篡改的,需要添加 Docker 官方的 GPG 密钥。运行以下命令:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
该命令会从 Docker 官方网站下载 GPG 密钥,并将其保存到系统的密钥环中。
4. 添加 Docker 软件源
将 Docker 的软件源添加到系统中,以便 apt 工具能够从该源下载 Docker 相关的软件包。根据你的 Ubuntu 版本,执行相应的命令:
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
上述命令会根据系统的版本信息,将合适的 Docker 软件源添加到系统的软件源列表文件中。
5. 再次更新软件包索引
添加完 Docker 软件源后,需要再次更新系统的软件包索引,让 apt 工具识别新添加的软件源中的软件包。执行命令:
sudo apt update
6. 安装 Docker Engine
最后,使用 apt 工具安装 Docker Engine,这是 Docker 的核心组件,用于运行和管理容器。执行命令:
sudo apt install docker-ce docker-ce-cli containerd.io
安装过程中,系统会提示确认安装,输入 y 并回车,等待安装完成即可。
7. 验证安装
安装完成后,可以通过运行以下命令来验证 Docker 是否安装成功:
sudo docker run hello-world
如果看到类似 “Hello from Docker!” 的输出信息,说明 Docker 已经成功安装并可以正常运行。
三、Docker 常见问题及解决方案
1. 权限问题:非 root 用户无法执行 docker 命令
当尝试以非 root 用户身份执行 docker 命令时,可能会遇到权限不足的错误提示,如 “Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post “http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/create”: dial unix /var/run/docker.sock: connect: permission denied”。
解决方案:将当前用户添加到 docker 用户组中,执行命令:
sudo usermod -aG docker $USER
添加完成后,需要重新登录系统或者执行 newgrp docker 命令使设置生效,之后就可以以非 root 用户身份执行 docker 命令了。
2. Docker 服务无法启动
在启动 Docker 服务时,可能会遇到服务无法正常启动的情况,执行 sudo systemctl start docker 命令后没有反应,或者提示错误信息。
解决方案:
- 检查系统日志,查看具体的错误原因。执行 sudo journalctl -u docker 命令,根据日志中的错误提示进行排查。
- 可能是 Docker 相关的配置文件被修改导致服务无法启动,可以尝试恢复默认配置,或者重新安装 Docker。
- 确保系统中没有其他进程占用 Docker 所需的端口或资源,例如 3376 端口等。
3. 镜像下载缓慢或失败
在使用 docker pull 命令下载镜像时,可能会遇到下载速度非常缓慢,甚至下载失败的问题。
解决方案:
- 配置国内镜像加速地址,如阿里云镜像加速、网易云镜像加速等。以阿里云为例,登录阿里云容器镜像服务控制台,获取专属的镜像加速地址,然后修改 Docker 的配置文件 /etc/docker/daemon.json ,添加如下内容:
{
"registry-mirrors": ["你的阿里云镜像加速地址"]
}
修改完成后,执行 sudo systemctl restart docker 命令重启 Docker 服务,即可使用镜像加速地址下载镜像。
- 检查网络连接是否正常,尝试更换网络环境,如从 Wi-Fi 切换到有线网络等。
4. 容器无法正常运行或启动后自动退出
创建并启动容器后,容器可能无法按照预期正常运行,或者启动后立即自动退出。
解决方案:
- 使用 docker logs 命令查看容器的日志信息,了解容器启动过程中发生的错误或异常。例如,执行 docker logs 容器ID 命令,根据日志提示进行问题排查和修复。
- 检查容器的启动命令和参数是否正确,确保容器所需的依赖和配置都已正确设置。
- 确认容器内的应用程序是否存在问题,可以进入容器内部进行调试,执行 docker exec -it 容器ID /bin/bash 命令进入容器的命令行界面,检查应用程序的运行情况。
通过以上步骤,你应该能够在 Ubuntu 环境下成功搭建 Docker,并解决一些常见的问题。如果在搭建和使用过程中遇到其他特殊问题,欢迎随时向我咨询。