TravisCI – Docker – 执行失败

我试图在TravisCI中启动一个容器,然后让一些Docker docker exec它。 但是每次都会出现255错误代码。

我不明白的是,这个过程在当地正常工作。
然后我用标准容器(ubuntu) 将我的travisCI脚本更新为非常简单的东西 。 同样的情况正在发生。

我只是拉一个图像,运行它没有结束,并试图执行一些执行。 我使用文件container_id来存储容器标识(该部分工作)。

这是我的代码:

 $ docker pull ubuntu:latest latest: Pulling from ubuntu age you are pulling has been verified. Important: image verification is a tech preview feature and should not be relied on to provide security. Status: Downloaded newer image for ubuntu:latest $ docker run -d ubuntu:latest sh -c "while true; do sleep 5; done" > container_id The command "docker run -d ubuntu:latest sh -c "while true; do sleep 5; done" > container_id" exited with 0. $ docker logs `cat container_id` The command "docker logs `cat container_id`" exited with 0. $ docker exec `cat container_id` sh -c "mkdir /repository" The command "docker exec `cat container_id` sh -c "mkdir /repository"" exited with 255. $ docker logs `cat container_id` The command "docker logs `cat container_id`" exited with 0. $ docker exec `cat container_id` sh -c "cd /repository ; git clone https://github.com/tdeheurles/homecores" The command "docker exec `cat container_id` sh -c "cd /repository ; git clone https://github.com/tdeheurles/homecores"" exited with 255. $ docker logs `cat container_id` The command "docker logs `cat container_id`" exited with 0. $ docker exec `cat container_id` sh -c "cd /repository/homecores ; ./test/test.sh" The command "docker exec `cat container_id` sh -c "cd /repository/homecores ; ./test/test.sh"" exited with 255. $ docker logs `cat container_id` The command "docker logs `cat container_id`" exited with 0. Done. Your build exited with 1. 

255表示发生错误。
在像mkdir /repository这样简单的东西上,这可能意味着docker exec sh会话中的用户ID不是root,并且没有权限在/一个文件夹。

通过添加一个中间来检查:

 docker exec `cat container_id` sh -c "id -a" 

docker exec man页面提到了-u ,– --user=选项,所以你可以试试:

 docker exec -u root `cat container_id` sh -c "mkdir /repository" 

从下面的讨论中,似乎错误可能与缺lesslxc驱动程序有关。

什么可以帮助(至less在circleci :看他们在docker exec )是

 sudo lxc-attach -n "$(docker inspect --format '{{.Id}}' hctest)" -- bash -c ls 

有同样的问题试图在docker执行任何东西在特拉维斯。 我在/var/log/upstart/docker.log中注意到这个错误信息:

ERRO [0054]错误集装箱85f99b93c5307fe8ec45ea4e743147869cc25a3e5dfb91b623dd6b3eede1da3b开始exec命令:不能运行在容器8f40f7b49658cc9661446f61492d36f02e371bd4a22ef2f892f258bb856ea7e6 exec命令85f99b93c5307fe8ec45ea4e743147869cc25a3e5dfb91b623dd6b3eede1da3b:[8]系统错误:权限被拒绝

经过一番挖掘,我可以通过在特权模式下运行docker容器(docker run –privileged)来解决这个问题。 希望能帮助到你。