2. 安装与部署:在Linux/CentOS上安装Docker、配置镜像加速器、Docker daemon配置、验证安装
好,咱们直接进入正题。这一章我带你亲手把Docker环境搭起来。别小看安装这一步,我见过太多项目因为一开始配置没弄好,后面排查问题排查到崩溃。说白了,地基没打牢,楼盖得再高也悬。
2.1 环境准备与系统要求
先看看你的机器。Docker对Linux内核有要求,版本得是3.10以上。怎么查?一条命令搞定:
uname -r
如果输出小于3.10,嗯,你得先升级内核。我个人习惯用CentOS 7.9或8.x,这两个版本我踩过无数坑,相对稳定。
另外,记得把系统更新到最新:
sudo yum update -y
为什么要先更新?我在一个项目里遇到过,旧版本的device-mapper和Docker不兼容,容器启动直接报错。那次排查花了我整整一个下午。所以,别偷懒。
2.2 卸载旧版本(如果有)
如果你之前装过Docker,先清理干净。否则新老版本冲突,你会怀疑人生的。
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
我曾经帮一个客户排查问题,他机器上装了三个不同版本的Docker,结果容器网络全乱套了。嗯,这种情况直接重装系统反而更快。
2.3 安装Docker Engine
我推荐用官方仓库安装,这样后续更新方便。先安装依赖包:
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
然后添加Docker的官方仓库:
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
接下来安装Docker Engine:
sudo yum install -y docker-ce docker-ce-cli containerd.io
这里有个小细节。安装过程中如果提示GPG密钥验证失败,别慌。检查一下系统时间是不是对的。我遇到过一台服务器时间差了两年,GPG签名验证自然过不去。
2.4 启动Docker并设置开机自启
安装完别急着用,先启动服务:
sudo systemctl start docker
设置开机自启,这个一定要做。你想想看,服务器重启后Docker没起来,所有容器都挂了,那画面太美我不敢看。
sudo systemctl enable docker
2.5 配置镜像加速器
国内拉取Docker镜像,那速度,简直了。我刚开始用Docker时,拉一个几百兆的镜像等了一个小时。后来才知道有镜像加速器这玩意儿。
编辑Docker的配置文件:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://你的加速器地址.mirror.aliyuncs.com"]
}
EOF
加速器地址去哪搞?阿里云、腾讯云、华为云都有免费的。我个人习惯用阿里云的,注册个账号就能拿到专属地址。
sudo systemctl daemon-reload && sudo systemctl restart docker
2.6 Docker daemon核心配置
daemon.json这个文件,说白了就是Docker的命根子。除了镜像加速,还有很多关键配置可以在这里调。
我给你列几个我常用的配置项:
| 配置项 | 说明 | 我的建议值 |
|---|---|---|
| storage-driver | 存储驱动 | overlay2(性能最好) |
| log-driver | 日志驱动 | json-file |
| log-opts.max-size | 单个日志文件大小 | 10m |
| log-opts.max-file | 日志文件保留数量 | 3 |
| exec-opts | 容器运行时参数 | ["native.cgroupdriver=systemd"] |
一个完整的daemon.json示例:
{
"registry-mirrors": ["https://你的加速器地址.mirror.aliyuncs.com"],
"storage-driver": "overlay2",
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
},
"exec-opts": ["native.cgroupdriver=systemd"],
"live-restore": true
}
2.7 验证安装
配置完了,怎么知道装好了没?跑几个命令验证一下。
先看Docker版本:
docker version
输出应该包含Client和Server两部分信息。如果只有Client没有Server,说明Docker daemon没启动。
再看系统信息:
docker info
这个命令会显示Docker的详细配置,包括存储驱动、镜像加速器、容器数量等。我每次配置完都会跑一下这个命令,确认所有配置都生效了。
最后跑一个Hello World容器:
docker run hello-world
如果看到类似这样的输出,恭喜你,安装成功了:
Hello from Docker!
This message shows that your installation appears to be working correctly.
sudo setenforce 0。但生产环境建议配置SELinux策略,而不是直接关闭。
2.8 非root用户运行Docker
默认情况下,Docker需要root权限。但你想想看,每次敲命令都要加sudo,多麻烦。把当前用户加入docker组:
sudo usermod -aG docker $USER
然后退出重新登录,或者执行:
newgrp docker
验证一下:
docker ps
如果没报权限错误,说明配置成功了。
2.9 总结
好了,到这里Docker的安装和部署就完成了。你想想看,整个过程其实不复杂,但每个环节都有坑。从内核版本检查,到镜像加速器配置,再到daemon.json的调优,每一步都值得认真对待。
我个人习惯把daemon.json的配置版本化管理起来,这样换机器时直接复制过去就行。嗯,下一章我会带你深入Docker的核心概念——镜像和容器,到时候咱们再聊。
公众号:蓝海资料掘金营,微信deep3321