在当今的云计算和微服务架构中,Docker已经成为不可或缺的基础设施组件。作为轻量级的虚拟化解决方案,Docker通过容器技术实现了应用与运行环境的标准化打包和分发。与传统的虚拟机相比,Docker容器共享主机操作系统内核,启动更快,资源占用更少,同时保持了良好的隔离性。
Docker生态包含几个核心组件:Docker Engine是运行容器的核心引擎;Docker Hub是官方的镜像仓库;Docker Compose用于定义和运行多容器应用;Docker Swarm提供原生的集群管理能力。这些组件共同构成了完整的容器化解决方案,支持从开发到生产的全生命周期管理。
在开始安装Docker之前,需要确认系统满足基本要求。对于Linux系统,内核版本应不低于3.10(可通过uname -r命令查看)。推荐使用较新的Linux发行版,如Ubuntu 18.04+、CentOS 7+或Debian 9+。Windows系统需要Windows 10专业版或企业版(版本1607以上),并启用Hyper-V功能。
注意:32位系统和旧版Windows家庭版不支持Docker Desktop的完整功能,建议升级系统或考虑Linux虚拟机方案。
如果系统上曾经安装过旧版Docker,建议先彻底清理以避免冲突。在Ubuntu/Debian上可运行:
bash复制sudo apt-get remove docker docker-engine docker.io containerd runc
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
对于CentOS/RHEL系统:
bash复制sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
bash复制sudo apt-get update
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release
bash复制curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
bash复制echo \
"deb [arch=$(dpkg --print-architecture) 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
bash复制sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
bash复制sudo docker run hello-world
bash复制sudo yum install -y yum-utils
bash复制sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
bash复制sudo yum install docker-ce docker-ce-cli containerd.io
bash复制sudo systemctl start docker
sudo systemctl enable docker
bash复制sudo docker run hello-world
对于Windows 10/11,建议启用WSL2以获得更好的性能:
powershell复制dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
powershell复制wsl --set-default-version 2
默认情况下,Docker需要sudo权限。为避免每次输入sudo,可将用户加入docker组:
bash复制sudo usermod -aG docker $USER
newgrp docker # 立即生效,无需重新登录
国内用户建议配置镜像加速器以提高下载速度。编辑或创建/etc/docker/daemon.json:
json复制{
"registry-mirrors": [
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com"
]
}
然后重启Docker服务:
bash复制sudo systemctl restart docker
根据文件系统类型选择合适的存储驱动。对于较新的Linux发行版,overlay2是推荐选择。检查当前驱动:
bash复制docker info | grep "Storage Driver"
如需修改,编辑/etc/docker/daemon.json:
json复制{
"storage-driver": "overlay2"
}
运行测试容器验证安装是否成功:
bash复制docker run --rm hello-world
检查Docker版本信息:
bash复制docker --version
docker-compose --version
运行一个简单的性能测试容器:
bash复制docker run --rm -it alpine sh -c "time dd if=/dev/zero of=test bs=1M count=1000"
观察容器启动时间和IO性能,确保没有明显异常。
如果遇到镜像拉取失败,首先检查网络连接:
bash复制ping download.docker.com
尝试临时关闭防火墙:
bash复制sudo systemctl stop firewalld # CentOS
sudo ufw disable # Ubuntu
当出现"Got permission denied"错误时,检查:
Docker默认使用/var/lib/docker作为存储位置。检查空间使用情况:
bash复制docker system df
df -h /var/lib/docker
可定期清理无用资源:
bash复制docker system prune -a
通过cgroups限制容器资源使用:
bash复制docker run -it --cpus=1 --memory=512m alpine
配置日志驱动和轮转策略,编辑/etc/docker/daemon.json:
json复制{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
创建自定义桥接网络:
bash复制docker network create --driver bridge --subnet 172.28.0.0/16 my-net
创建命名数据卷并挂载:
bash复制docker volume create my-vol
docker run -d --name devtest -v my-vol:/app nginx
配置Docker构建缓存和并行构建,编辑/etc/docker/daemon.json:
json复制{
"builder": {
"gc": {
"enabled": true,
"defaultKeepStorage": "20GB"
}
},
"experimental": true,
"features": {
"buildkit": true
}
}