amazon-web-services - CI/CD 与 Jenkins 和 ECS
问题描述
我正在尝试在 aws 上设置 jenkins,以便每当有新版本时,它都会在 ECS 中为我的项目创建一个新的 docker 容器。我已经尝试过这些链接-
我的 Jenkins 机器是一个 EC2 实例,它不是 ECS 集群的一部分。我已经按照链接中的建议配置了我的管道,但我收到了错误-
尝试在 unix:///var/run/docker.sock 连接到 Docker 守护程序套接字时获得权限被拒绝:发布
我用谷歌搜索了这个错误,它要求我授予 jenkins 用户访问 Docker 组的权限,但我的 docker 位于没有 jenkins 用户的 ECS 集群中。如果我在正确的轨道上,我在这里有点困惑。任何帮助将不胜感激。
解决方案
任何帮助将不胜感激。
我相信您遇到的错误来自 Jenkins 不允许在 Jenkins EC2 实例上运行 docker。默认情况下,没有为 Jenkins 用户分配 shell 访问权限。为了检查这一点,您必须在 Jenkins 中启用 shell 使用,然后切换到它,如果您执行docker info
,您应该会遇到相同的错误。
如何规避取决于 Jenkins box 上使用的操作系统,但有一些想法:
将 jenkins 用户添加到 docker 组:在docker for linux的后期安装过程中,据说您需要手动将要使用 docker 的任何用户放置到 docker 组。在这种情况下,它将是:
sudo usermod -aG docker jenkins
指示 Docker 使用 jenkins grop:如果您使用的是基于 debian 的发行版,那么
/etc/default/docker
您可以在文件中配置附加的 docker 选项:DOCKER_OPTS=' -G jenkins'
授予 jenkins 用户 sudo 特权:对于明显的安全问题最不推荐,但在此处列出只是作为快速/不安全的修复。
推荐阅读
- c# - 从 SSIS 包通过 HTTP 下载文件不起作用
- python - Python 错误 - “ImportError: No module named”
- ios - Xcode 模拟器开启。由于音频引擎,Jenkins space 导致自动化测试崩溃
- excel - 在工作簿打开事件中启用宏
- actions-on-google - 在没有 Dialogflow 的情况下在 google 上发布操作
- java - Spring执行器shutdown-endpoint无法停止java进程
- r - as.Date 在西班牙语言环境中带有点的缩写月份 (%b)
- c++ - 从 Swift 设置 C++ 指针
- javascript - 如何修复 React.js iOS 空白屏幕?
- python - 从表中添加复杂条件的 SQL 查询