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)来解决这个问题。 希望能帮助到你。