首页 > 解决方案 > CI/CD 与 Jenkins 和 ECS

问题描述

我正在尝试在 aws 上设置 jenkins,以便每当有新版本时,它都会在 ECS 中为我​​的项目创建一个新的 docker 容器。我已经尝试过这些链接-

https://medium.com/@sachin.arote1/deploy-docker-containers-on-aws-ecs-cluster-via-jenkins-605eee0d22b0

https://docs.aws.amazon.com/AWSGettingStartedContinuousDeliveryPipeline/latest/GettingStarted/CICD_Jenkins_Pipeline.html

我的 Jenkins 机器是一个 EC2 实例,它不是 ECS 集群的一部分。我已经按照链接中的建议配置了我的管道,但我收到了错误-

尝试在 unix:///var/run/docker.sock 连接到 Docker 守护程序套接字时获得权限被拒绝:发布

我用谷歌搜索了这个错误,它要求我授予 jenkins 用户访问 Docker 组的权限,但我的 docker 位于没有 jenkins 用户的 ECS 集群中。如果我在正确的轨道上,我在这里有点困惑。任何帮助将不胜感激。

标签: amazon-web-servicesdockerjenkinsamazon-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 特权:对于明显的安全问题最不推荐,但在此处列出只是作为快速/不安全的修复。


推荐阅读