在搭建好 Jenkins 并创建了第一个声明式流水线后,下一步是准备我的机器以构建 Docker 镜像。
由于我的流水线最终将从 GitHub 克隆代码、构建 Docker 镜像并将其推送到容器镜像仓库,因此 Jenkins 需要访问 Docker。如果未安装 Docker,docker build 阶段将失败,因为 Jenkins 无法执行 Docker 命令。
安装 Docker
在我的 Ubuntu 机器上,我使用以下命令安装了 Docker:
sudo apt update
sudo apt install docker.io -y
安装完成后,我通过以下命令进行了验证:
docker --version
这确认了 Docker 已成功安装并可以使用。
验证 Docker 安装
安装 Docker 只是工作的一半。下一步是检查当前用户是否有权限使用 Docker。
运行:
docker ps
预期输出
如果一切配置正确,您应该会看到类似以下的内容:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
即使没有容器正在运行,得到像上面这样的空表格也意味着 Docker 正在正常工作。
如果出现权限错误怎么办?
如果您看到如下错误:
permission denied while trying to connect to the Docker daemon socket
这意味着当前用户没有权限访问 Docker 守护进程。
首先,检查您当前登录的用户:
whoami
示例输出:
nishant
现在将您的用户添加到 docker 组:
sudo usermod -aG docker $USER
此命令的作用是什么?
usermod 修改用户帐户。
-aG 表示将用户附加到补充组,而不删除现有组。
docker 是拥有与 Docker 守护进程通信权限的组。
$USER 自动引用您当前登录的用户名。
应用更改
组成员身份不会立即生效。
您有两个选择:
选项 1(推荐):
退出您的 Ubuntu 会话,然后重新登录。这将刷新您的用户组,是最可靠的方法。
选项 2:
只需重启终端会话(或打开一个新的)。在许多情况下,仍然需要注销并重新登录才能使更改完全生效。
再次验证
再次运行命令:
docker ps
如果您现在看到一个空的容器列表而不是权限错误,则说明 Docker 已正确配置,您可以从 Jenkins 流水线中使用它。
学习笔记:这是初学者安装 Docker 后最常见的问题之一。安装成功了,但 Docker 命令因用户未添加到 docker 组而失败。
0 Comments
Log in to join the conversation.No comments yet. Be the first to share your thoughts.