3、安装Docker:Docker的安装与验证、配置Docker镜像加速器、非root用户管理Docker
好,咱们继续。上一章我们把Linux环境准备好了,现在该请出Docker这位主角了。
为什么要用Docker?说白了,就是为了“环境一致性”。你想想看,我在本地跑得好好的Ollama,传到服务器上就报错,这种事我遇到过太多次了。Docker把应用和它的依赖打包成一个镜像,走到哪跑到哪,省心。
这一章,我会带你完成三件事:安装Docker、配个镜像加速器、让普通用户也能用Docker。一步步来,别急。
3.1 安装Docker
我个人习惯用官方脚本安装,干净利落。当然,你也可以用系统自带的包管理器,但版本可能比较旧。
先更新一下包索引,然后安装一些依赖,让apt支持HTTPS:
sudo apt update
sudo apt install -y ca-certificates curl gnupg lsb-release
接下来,添加Docker官方的GPG密钥和仓库。这一步是为了确保你下载的软件包是官方签名的,没被篡改过。
# 添加GPG密钥
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# 添加Docker仓库
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
嗯,这里要注意,lsb_release -cs 会输出你的Ubuntu版本代号,比如 jammy 或 focal。Docker会根据这个自动匹配正确的仓库。
仓库加好了,再更新一次,然后安装Docker引擎:
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
安装完成后,Docker服务会自动启动。你可以检查一下状态:
sudo systemctl status docker
看到 active (running) 就对了。如果没启动,手动来一下:
sudo systemctl start docker
sudo systemctl enable docker # 设置开机自启
systemctl status docker 的日志,多半是 iptables 或 overlay 模块的问题。
3.2 验证Docker安装
装没装好,跑个经典的 hello-world 镜像就知道了:
sudo docker run hello-world
如果看到类似下面的输出,恭喜你,Docker已经正常工作了:
Hello from Docker!
This message shows that your installation appears to be working correctly.
为什么会这样?Docker会先从本地找 hello-world 镜像,找不到就去Docker Hub拉取,然后创建一个容器运行它。整个过程验证了Docker的拉取、创建、运行三个核心能力。
你也可以看看当前Docker的版本信息:
docker --version
docker info
docker info 会输出很多信息,包括容器数量、镜像数量、存储驱动等。我一般用它来快速诊断环境。
3.3 配置Docker镜像加速器
在国内,直接从Docker Hub拉取镜像,那速度……嗯,你懂的。我曾经等一个几百兆的镜像等了一个小时,最后超时失败了。所以,镜像加速器几乎是必配的。
配置方法很简单,修改Docker的守护进程配置文件 /etc/docker/daemon.json。如果文件不存在,就新建一个:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://你的加速器地址"]
}
EOF
加速器地址从哪里来?我推荐几个常用的:
| 服务商 | 加速器地址 | 备注 |
|---|---|---|
| 阿里云 | https://你的ID.mirror.aliyuncs.com | 需要注册阿里云账号,获取专属地址 |
| 中科大 | https://docker.mirrors.ustc.edu.cn | 公共加速器,无需注册 |
| 网易 | http://hub-mirror.c.163.com | 公共加速器,无需注册 |
| 腾讯云 | https://mirror.ccs.tencentyun.com | 公共加速器,无需注册 |
我个人习惯用阿里云的,因为速度稳定。你如果没有阿里云账号,用中科大的也行。
配置好之后,重启Docker让配置生效:
sudo systemctl daemon-reload
sudo systemctl restart docker
验证一下加速器是否生效:
docker info | grep -A 1 "Registry Mirrors"
如果看到你配置的地址,就说明成功了。现在再拉个镜像试试,速度应该快多了。
3.4 非root用户管理Docker
每次用Docker都要加 sudo,是不是很烦?我刚开始用Docker时也觉得麻烦,后来才知道,把用户加入 docker 组就行了。
Docker守护进程启动时会创建一个 docker 用户组,但默认只有root用户在里面。我们把当前用户加进去:
sudo usermod -aG docker $USER
注意,这里的 $USER 会自动替换成你的当前用户名。如果你用的是其他用户,比如 ollama,就写成:
sudo usermod -aG docker ollama
修改完用户组后,需要重新登录才能生效。你可以退出当前会话再登录,或者直接执行:
newgrp docker
验证一下:
docker run hello-world
如果不用 sudo 也能正常运行,就搞定了。
docker 组,相当于给了这个用户root权限。因为Docker可以挂载宿主机目录、执行特权操作。所以,只给信任的用户加这个组。我在生产环境上,一般只给运维和开发负责人加,其他人还是用 sudo。
3.5 本章知识体系
为了让你更直观地理解这一章的内容,我画了一张流程图,把Docker安装、加速器配置、用户权限管理串起来:
这张图把这一章的核心步骤串起来了。你照着这个流程走,基本不会出问题。
好了,Docker环境已经就绪。下一章,我们会用Docker来部署Ollama,那才是真正的好戏开场。
公众号:蓝海资料掘金营,微信deep3321