Joh*_*han 3 jenkins docker boot2docker
我在Docker中运行了一个Jenkins容器,我想在运行集成测试时使用这个Jenkins容器来启动其他Docker容器.
所以我的计划是在容器中安装Docker,但这对我来说似乎不太好用.我的Dockerfile看起来像这样:
FROM jenkins
MAINTAINER xxxx
# Switch user to root so that we can install apps
USER root
RUN apt-get update
# Install latest version of Docker
RUN apt-get install -y apt-transport-https
RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
RUN sh -c "echo deb https://get.docker.com/ubuntu docker main > /etc/apt/sources.list.d/docker.list"
RUN apt-get update
RUN apt-get install -y lxc-docker
# Switch user back to Jenkins
USER jenkins
Run Code Online (Sandbox Code Playgroud)
该jenkins图片基于Debian Jessie.当我根据生成的图像在容器内启动bash终端时,例如:
docker images
Run Code Online (Sandbox Code Playgroud)
我收到以下错误消息:
FATA[0000] Get http:///var/run/docker.sock/v1.16/images/json: dial unix /var/run/docker.sock: no such file or directory. Are you trying to connect to a TLS-enabled daemon without TLS?
Run Code Online (Sandbox Code Playgroud)
我怀疑这可能是因为docker服务没有启动.但是当我尝试启动服务时,我的下一个问题出现了:
service docker start
Run Code Online (Sandbox Code Playgroud)
这给了我以下错误:
mount: permission denied
Run Code Online (Sandbox Code Playgroud)
我已经跟踪了/etc/init.d/docker这行中的错误:
mount -t tmpfs -o uid=0,gid=0,mode=0755 cgroup /sys/fs/cgroup
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:
更新:我已经尝试使用root用户和jenkins容器.sudo没有安装.
更简单的替代方法是安装docker socket并创建兄弟容器.为此,请在您的映像上安装docker并运行如下操作:
docker run -it -v /var/run/docker.sock:/var/run/docker.sock myimage
Run Code Online (Sandbox Code Playgroud)
在容器中,您现在应该能够像在主机上一样运行docker命令.此方法的优点是您不需要--privileged并且可以从主机使用缓存.缺点是您可以看到所有正在运行的容器,而不仅仅是从容器中创建的容器.
| 归档时间: |
|
| 查看次数: |
2974 次 |
| 最近记录: |