首页 > 解决方案 > 通过 dockerfile 传递 Docker 运行命令

问题描述

我正在尝试在我的容器中运行 docker。我在一些文章中看到我需要通过 --privileged=true 才能使这成为可能。

但由于某种原因,我没有在运行时传递此参数的选项。因为它由一些我无权访问的自动化处理。

所以,我想知道是否可以在 Dockerfile 中传递上述选项,这样我就没有将其作为参数传递。

现在这是我的 dockerfile 的内容。

FROM my-repo/jenkinsci/jnlp-slave:2.62

USER root
#RUN --privileged=true this doesnt work for obvious reasons
MAINTAINER RD_TOOLS "abc@example.com"
RUN apt-get update
RUN apt-get remove docker docker-engine docker.io || echo "No worries"
RUN apt-get --assume-yes install \
     apt-transport-https \
     ca-certificates \
     curl \
     gnupg2 \
     software-properties-common curl
RUN curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
RUN apt-key fingerprint 0EBFCD88
RUN cat /etc/*-release
RUN apt-get --assume-yes install docker.io
RUN docker --version
RUN service docker start

如果不传递 privilaged=true 参数,我似乎无法在 docker 中运行 docker。

非常感谢这方面的任何帮助。

标签: dockerkubernetesdocker-composedockerfile

解决方案


您不能强制容器在 Dockerfile 中以特权身份运行。

作为一般规则,您不能在 Docker 容器中运行 Docker;更典型的设置是共享主机的 Docker 套接字。在https://hub.docker.com/_/docker/有一个官方的 Docker 镜像尝试了这个,并给出了一些相当突出的建议,不要实际使用它。


推荐阅读