TravisCI-Docker-执行失败
我正试图在TravisCI中启动一个容器,然后对它执行一些TravisCI-Docker-执行失败,docker,travis-ci,Docker,Travis Ci,我正试图在TravisCI中启动一个容器,然后对它执行一些docker exec。但它每次都失败,错误代码为255 我不明白的是,该流程在本地运行良好。 然后我使用标准容器(ubuntu)。同样的情况也在发生 我只是拉一个图像,无休止地运行它,然后尝试对它执行一些exec。我使用一个文件container\u id来存储容器id(该部分工作) 这是我的密码: $ docker pull ubuntu:latest latest: Pulling from ubuntu age you are p
docker exec
。但它每次都失败,错误代码为255
我不明白的是,该流程在本地运行良好。然后我使用标准容器(ubuntu)。同样的情况也在发生 我只是拉一个图像,无休止地运行它,然后尝试对它执行一些exec。我使用一个文件
container\u id
来存储容器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"
其中提到了一个-u
,--user=
选项,因此您可以尝试:
docker exec -u root `cat container_id` sh -c "mkdir /repository"
从下面的讨论来看,似乎错误可能与缺少lxc驱动程序有关
有帮助的(至少在:见)是
在特拉维斯身上做任何事都有同样的问题。我在/var/log/upstart/docker.log中注意到这个错误消息: 错误[0054]在容器85f99b93c5307fe8ec45ea4e743147869cc25a3e5dfb91b623dd6b3eede1da3b中启动exec命令时出错:无法运行exec命令85F99B93C5307FE8EC45EA4E743147869CC25A3E5DFB91B623DD6EEDE1DA3B在容器8F40F7B49658CC9661446F61492D3F02E371BA2EF29F258BB856EA7E6中:[]系统错误:权限被拒绝
经过一些挖掘,我可以通过在特权模式下运行docker容器(docker run--privileged)来解决这个问题。希望有帮助。我有一个别名,可以输入启动的最后一个容器
别名exec_last='docker exec-it$(docker ps-lq)$(docker inspect-f{{.Path'}}$(docker ps-lq))
无论如何,你可以使用$(docker ps-lq)
大量代码来表示变量no?可能:container\u id=$(docker run-d ubuntu…)然后docker exec$container\u id…
我只是用文件系统save^^ThanksHi,tnaks从任何地方(ssh)获取容器id,但仍然是相同的问题。这两个命令以255退出。。。生成日志是@thibaultdehurles OK。让我们从解决docker exec的问题开始。让我们尝试使用一个docker exec
(任意docker exec
)命令。你的形象的切入点是什么?docker exec`cat container\u id`ls
会工作吗?不,它不工作。也许它来自我的配置:@thibaultdehourles首先检查docker ps-a
在docker运行后返回的内容,只是为了确定。另外,一个echo$container\u id
也可以,以确保该id已被正确捕获。已经完成。为下一个版本添加了:我确实更改为CircleCI,在那里我可以做我需要的事情。但可以肯定的是,知道这一点很好<代码>谢谢
sudo lxc-attach -n "$(docker inspect --format '{{.Id}}' hctest)" -- bash -c ls