4、Docker环境搭建:Docker CE安装、Docker Compose配置、镜像加速器设置、非root用户管理Docker
聊完了Ollama的安装,咱们得把Docker环境搭起来。说实话,在离线环境里搞Docker,最怕的就是依赖缺失和镜像拉不下来。我踩过不少坑,今天把这些经验都摊开来讲。
4.1 Docker CE 离线安装
Docker CE的安装,说白了就是把rpm包或者deb包准备好,然后手动装上去。我个人习惯用rpm方式,因为离线环境里rpm包更容易管理依赖。
第一步:准备安装包
在有网络的机器上,下载Docker CE的rpm包及其依赖。我建议用yumdownloader工具,它会自动把依赖都拉下来。
# 在有网络的机器上执行
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yumdownloader --resolve docker-ce docker-ce-cli containerd.io
第二步:传输到离线环境
把下载好的rpm包打包,传到离线服务器上。我一般用scp或者U盘拷贝,看你们网络怎么通的。
# 打包
tar czf docker-ce-packages.tar.gz *.rpm
# 传到目标机器
scp docker-ce-packages.tar.gz user@offline-server:/tmp/
第三步:安装
在离线服务器上,解压并安装。注意顺序,先装containerd,再装docker-ce-cli,最后装docker-ce。
cd /tmp
tar xzf docker-ce-packages.tar.gz
rpm -ivh containerd.io-*.rpm
rpm -ivh docker-ce-cli-*.rpm
rpm -ivh docker-ce-*.rpm
4.2 Docker Compose 配置
Docker Compose是编排多容器应用的神器。在离线环境里,它就是个二进制文件,直接下载扔到/usr/local/bin/就行。
下载Compose二进制文件
去GitHub Releases页面下载对应版本的docker-compose-linux-x86_64。我习惯用v2版本,语法更现代。
# 有网络环境下载
wget https://github.com/docker/compose/releases/download/v2.24.0/docker-compose-linux-x86_64
# 改名并赋予执行权限
mv docker-compose-linux-x86_64 docker-compose
chmod +x docker-compose
传输到离线环境
把docker-compose文件拷贝到目标机器的/usr/local/bin/目录下。
scp docker-compose user@offline-server:/usr/local/bin/
验证安装
docker-compose --version
# 输出类似:Docker Compose version v2.24.0
4.3 镜像加速器设置
离线环境没有互联网,镜像加速器其实用不上。但如果你有内部镜像仓库(比如Harbor),那加速器就派上用场了。
配置镜像加速器
编辑/etc/docker/daemon.json文件,添加registry-mirrors配置。
{
"registry-mirrors": [
"https://your-internal-registry.com",
"https://docker.mirrors.ustc.edu.cn"
],
"insecure-registries": [
"your-internal-registry.com:5000"
]
}
重启Docker服务
systemctl daemon-reload
systemctl restart docker
4.4 非root用户管理Docker
默认情况下,Docker需要root权限才能运行。但生产环境里,我们一般用普通用户操作。嗯,这里有个小坑要讲。
创建docker用户组
sudo groupadd docker
sudo usermod -aG docker $USER
重新登录
退出当前会话,重新登录。或者用newgrp docker命令临时切换组。
newgrp docker
docker ps
# 应该能正常输出,没有权限错误
验证非root用户
whoami
# 输出普通用户名
docker run hello-world
# 应该能正常拉取并运行
知识体系结构图
这张图把Docker环境搭建的四个核心模块串起来了。你想想看,从安装到编排,再到镜像加速和权限管理,每一步都有坑。我当年在离线环境里搞Docker,光是依赖问题就折腾了两天。现在把这些经验整理出来,希望能帮你少走弯路。