【问题标题】:how to install/start docker engine service inside a docker container如何在 docker 容器中安装/启动 docker 引擎服务
【发布时间】:2017-06-04 04:24:51
【问题描述】:

我在 jenkins 的官方 docker 容器中运行 jenkins。我有以下dockerfile 遵循https://docs.docker.com/engine/installation/linux/debian/ 的说明

FROM jenkins:2.32.1

# install docker inside this container
USER root
    # Install Docker inside Jenkins
    RUN apt-get update
    RUN apt-get purge "docker.io*"
    RUN apt-get update
    RUN apt-get install -y apt-transport-https ca-certificates gnupg2
    RUN apt-key adv \
       --keyserver hkp://ha.pool.sks-keyservers.net:80 \
       --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
    RUN echo "deb https://apt.dockerproject.org/repo debian-jessie main" > /etc/apt/sources.list.d/docker.list
    RUN apt-get update
    RUN apt-cache policy docker-engine
    RUN apt-get update
    RUN apt-get install -y docker-engine
    RUN gpasswd -a jenkins docker
    USER jenkins

然后我执行以下操作:

  • 从此 dockerfile 构建映像
  • 从镜像运行容器
  • root 用户 的身份在容器中执行 bash
  • 在容器内的 bash 中运行 sudo docker service start

这是我得到的:

root@1e0f4b325d58:/# sudo service docker start
mount: permission denied
rmdir: failed to remove ‘cpu’: Read-only file system
mount: permission denied
rmdir: failed to remove ‘cpuacct’: Read-only file system
mount: permission denied
rmdir: failed to remove ‘net_cls’: Read-only file system
mount: permission denied
rmdir: failed to remove ‘net_prio’: Read-only file system
/etc/init.d/docker: 96: ulimit: error setting limit (Operation not permitted)

【问题讨论】:

    标签: bash jenkins docker containers docker-engine


    【解决方案1】:

    如果要在 docker 中运行 docker,则需要将容器作为特权容器运行。

    所以something like this (1) 是必需的:

    docker run --privileged your_image:tag
    

    您还需要小心使用 iptables 和 App Armour,但这需要稍加修改。


    另一种方法是授予对容器内 docker 守护进程的访问权限,like so (2):

    docker run -v /var/run/docker.sock:/var/run/docker.sock your_image:tag
    

    参考:

    1https://blog.docker.com/2013/09/docker-can-now-run-within-docker/

    2https://jpetazzo.github.io/2015/09/03/do-not-use-docker-in-docker-for-ci/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-16
      • 2019-10-25
      • 1970-01-01
      • 2017-11-11
      • 1970-01-01
      • 2013-08-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多