1. Ubuntu系统安装Docker完整指南
作为现代应用开发和部署的核心工具,Docker已经成为开发者和运维人员的标配技能。在Ubuntu系统上安装Docker看似简单,但其中包含不少值得注意的技术细节和优化配置。本文将带你从零开始,完成Docker在Ubuntu上的完整安装和优化配置。
1.1 系统环境准备
在开始安装前,我们需要确认Ubuntu系统版本和架构。Docker官方支持以下Ubuntu版本:
- Ubuntu Jammy 22.04 (LTS)
- Ubuntu Impish 21.10
- Ubuntu Focal 20.04 (LTS)
- Ubuntu Bionic 18.04 (LTS)
可以通过以下命令查看系统信息:
bash复制lsb_release -a
uname -m
注意:建议使用LTS(Long Term Support)版本以获得更稳定的支持。对于生产环境,Ubuntu 20.04 LTS或22.04 LTS是最佳选择。
1.2 卸载旧版本Docker
如果你的系统上已经安装过旧版Docker,需要先彻底卸载:
bash复制sudo apt-get remove docker docker-engine docker.io containerd runc
sudo apt-get purge docker-ce docker-ce-cli containerd.io
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
2. Docker安装方法详解
2.1 使用官方脚本快速安装
Docker官方提供了一个便捷的安装脚本,适合快速部署:
bash复制curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
这个脚本会自动检测系统环境并安装适合的Docker版本。安装完成后,建议将当前用户加入docker组以避免每次使用sudo:
bash复制sudo usermod -aG docker $USER
newgrp docker
2.2 通过APT仓库安装(推荐)
更规范的做法是通过Docker官方APT仓库安装,步骤如下:
- 更新APT包索引并安装依赖:
bash复制sudo apt-get update
sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
- 添加Docker官方GPG密钥:
bash复制sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
- 设置稳定版仓库:
bash复制echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
- 安装Docker引擎:
bash复制sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
2.3 验证安装
安装完成后,运行以下命令验证Docker是否正常工作:
bash复制sudo docker run hello-world
如果看到"Hello from Docker!"的消息,说明安装成功。
3. Docker配置优化
3.1 配置镜像加速器
国内用户建议配置镜像加速器以提高拉取镜像的速度。常用的镜像加速器包括阿里云、腾讯云等。
以阿里云为例,配置方法如下:
- 登录阿里云容器镜像服务控制台
- 获取专属加速器地址
- 创建或修改/etc/docker/daemon.json文件:
json复制{
"registry-mirrors": ["https://<your-accelerator-id>.mirror.aliyuncs.com"]
}
- 重启Docker服务:
bash复制sudo systemctl daemon-reload
sudo systemctl restart docker
3.2 调整Docker存储驱动
Ubuntu默认使用overlay2存储驱动,这是目前最推荐的驱动。可以通过以下命令确认:
bash复制docker info | grep "Storage Driver"
如果需要修改存储驱动,可以编辑/etc/docker/daemon.json文件:
json复制{
"storage-driver": "overlay2"
}
3.3 配置日志轮转
Docker容器日志默认不会自动清理,可能导致磁盘空间耗尽。可以配置日志轮转:
json复制{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
4. Docker常用命令速查
4.1 镜像管理
bash复制# 搜索镜像
docker search ubuntu
# 拉取镜像
docker pull ubuntu:20.04
# 列出本地镜像
docker images
# 删除镜像
docker rmi <image_id>
# 构建镜像
docker build -t my-image .
4.2 容器管理
bash复制# 运行容器
docker run -it --name my-container ubuntu:20.04 /bin/bash
# 列出运行中的容器
docker ps
# 列出所有容器
docker ps -a
# 启动/停止容器
docker start/stop <container_id>
# 进入运行中的容器
docker exec -it <container_id> /bin/bash
# 删除容器
docker rm <container_id>
4.3 网络管理
bash复制# 列出网络
docker network ls
# 创建网络
docker network create my-network
# 连接容器到网络
docker network connect my-network my-container
5. 常见问题解决
5.1 权限问题
如果遇到"Got permission denied"错误,确保:
- 当前用户已加入docker组
- 执行了newgrp docker或重新登录
5.2 端口冲突
当端口已被占用时,可以:
- 更改容器映射端口:-p 8081:80
- 停止占用端口的服务
5.3 存储空间不足
Docker默认使用/var/lib/docker目录,如果空间不足可以:
- 使用软链接将目录指向更大分区
- 修改daemon.json中的"data-root"配置项
5.4 容器时间不同步
容器内时间可能与宿主机不同步,解决方法:
bash复制docker run -v /etc/localtime:/etc/localtime:ro ...
6. Docker Compose安装与使用
Docker Compose是管理多容器应用的工具,安装方法:
bash复制sudo apt-get install docker-compose-plugin
验证安装:
bash复制docker compose version
使用示例(docker-compose.yml):
yaml复制version: '3'
services:
web:
image: nginx
ports:
- "80:80"
db:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: example
启动服务:
bash复制docker compose up -d
7. 生产环境建议
对于生产环境,建议额外配置:
- 启用用户命名空间隔离(--userns-remap)
- 配置TLS加密的远程访问
- 设置资源限制(--cpus, --memory)
- 定期更新Docker版本
- 配置监控和日志收集
通过以上步骤,你应该已经在Ubuntu系统上成功安装并配置好了Docker环境。Docker的强大功能将为你的开发和部署工作带来极大便利。在实际使用中,建议多查阅官方文档,了解最新特性和最佳实践。
