我有一个泊坞窗图像,其唯一的目的是启动子泊坞窗图像以进行持续集成。
如果我在任何支持docker的计算机上运行它,它将是:
docker run -d \
-e DRONE_SERVER=wss://ci.fommil.com/ws/broker \
-e DRONE_SECRET=... \
-e DOCKER_MAX_PROCS=1 \
-e DRONE_TIMEOUT=30m \
-v /var/run/docker.sock:/var/run/docker.sock \
--restart=always \
--name=drone-agent \
drone/drone:0.5 agent
但ECS小组似乎不允许我通过v标志。即使我选择了特权模式,我也不会认为这是通过的。
此图片仅包含一个二进制文件。不可能匆匆进去。如何使用ECS工具进行调试?例如查看docker启动参数。
我怎样才能安装插座?我是否不得不回到管理我自己的启动docker的EC2实例?
答案 0 :(得分:7)
我得到了这个工作!
诀窍是在任务级别添加一个卷(-v
的左侧)然后在容器级别添加它作为挂载,选择放置它的位置({{1的右侧) }})。
答案 1 :(得分:1)
fommil已经发布了解决方案。 可能还需要在运行的容器中更改对docker.sock的访问权限。 原因:安装docker.socks后,所有者设置为root,只要您的实际用户不是root,他就无法访问它-应该是真的。
不要,只需尝试从Docker容器中插入$ USER_NAME。 /var/run/docker.sock
这还将更改源的权限,您将无法从ec2-user帐户访问它!
您需要您的用户成为正确组的成员,或者采用以下快速解决方法: 将所有权设置为docker容器内的用户,但将组所有权设置为外部ec2实例的docker组。
逐步:
获取您的ec2用户的组ID:
id -G ec2-user
输出看起来像:
[ec2-user@ip-10-0-xx-xxx ~]$ id -G ec2-user
500 10 **497**
在这种情况下,497是仅存在于外部docker shell(ECS实例)中的docker组的ID。 /var/run/docker.sock必须分配给docker组,以便您可以访问它。
docker容器中用户的ID通常对于root用户为0,对于标准用户为1000。 为了确保您不会猜测:只需使用docker exec登录运行的docker容器(不要使用-u 0),并在提示符开头检查组ID的名称-与上面使用的命令相同!这次您应该记下第一个数字。在这个示例中(应该是):1000
还要检查正在运行的docker容器中docker.sock的实际设置:ls -la / var / run / docker / sock
这应该显示所有者设置 root 497
该数字(组)应与您之前看到的数字之一匹配。现在您知道该怎么办了:
sudo chown 1000:497 /var/run/docker.socks
这意味着您将root用户和ID为497的组分别分配给/var/run/docker.socks
即使给定的id在系统上不存在,此命令也起作用:用户ID 1000很可能仅存在于内部docker容器中,而组497仅存在于外部Docker中。
就是这样。