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
⚠️ 注意: 我曾经遇到过rpm安装时提示依赖缺失,原因是libseccomp版本太低。解决办法是先升级libseccomp,或者用--nodeps强制安装(不推荐)。

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
💡 小技巧: 如果离线环境没有wget,可以用curl -L代替。我一般两种都备着,以防万一。

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
🔑 关键点: 离线环境里,镜像加速器其实是个伪命题。真正有用的是配置insecure-registries,让Docker信任你的内部仓库。我遇到过因为HTTPS证书问题导致拉取失败,加上这个配置就解决了。

4.4 非root用户管理Docker

默认情况下,Docker需要root权限才能运行。但生产环境里,我们一般用普通用户操作。嗯,这里有个小坑要讲。

创建docker用户组

sudo groupadd docker
sudo usermod -aG docker $USER

重新登录

退出当前会话,重新登录。或者用newgrp docker命令临时切换组。

newgrp docker
docker ps
# 应该能正常输出,没有权限错误
⚠️ 注意: 我曾经犯过一个错误,以为加完组就能直接用。结果发现当前shell的组信息没更新,docker命令还是报权限错误。解决办法就是重新登录,或者用su - $USER切换一下。

验证非root用户

whoami
# 输出普通用户名
docker run hello-world
# 应该能正常拉取并运行
💡 小技巧: 如果你用的是sudo方式安装Docker,记得检查/etc/sudoers文件,确保docker组有执行权限。我一般会在sudoers里加一行:%docker ALL=(ALL) NOPASSWD: /usr/bin/docker

知识体系结构图

Docker环境搭建知识体系 Docker环境搭建 Docker CE安装 准备rpm包 传输到离线环境 rpm安装 Docker Compose 下载二进制文件 赋予执行权限 验证版本 镜像加速器 配置daemon.json insecure-registries 重启Docker服务 非root用户管理 创建docker组 添加用户到组 重新登录生效 四个核心模块:安装、编排、加速、权限管理

这张图把Docker环境搭建的四个核心模块串起来了。你想想看,从安装到编排,再到镜像加速和权限管理,每一步都有坑。我当年在离线环境里搞Docker,光是依赖问题就折腾了两天。现在把这些经验整理出来,希望能帮你少走弯路。


专注资料整理