2017-06-28 56 views
0

安装多克尔我有一个Dockerfile,看起来像这样:使用Dockerfile

# Pull base image 
FROM openjdk:8 

ENV SCALA_VERSION 2.12.2 
ENV SBT_VERSION 0.13.15 

# Scala expects this file 
RUN touch /usr/lib/jvm/java-8-openjdk-amd64/release 

# Install Scala 
## Piping curl directly in tar 
RUN \ 
    curl -fsL http://downloads.typesafe.com/scala/$SCALA_VERSION/scala-$SCALA_VERSION.tgz | tar xfz - -C /root/ && \ 
    echo >> /root/.bashrc && \ 
    echo 'export PATH=~/scala-$SCALA_VERSION/bin:$PATH' >> /root/.bashrc 

# Install sbt 
RUN \ 
    curl -L -o sbt-$SBT_VERSION.deb http://dl.bintray.com/sbt/debian/sbt-$SBT_VERSION.deb && \ 
    dpkg -i sbt-$SBT_VERSION.deb && \ 
    rm sbt-$SBT_VERSION.deb && \ 
    apt-get update && \ 
    apt-get install sbt && \ 
    sbt sbtVersion 

# Install Docker 
RUN \ 
    # if we have older versions, let's get rid of them first 
    apt-get install docker 

# Define working directory 
WORKDIR /root 

我想要做的是,我想泊坞窗安装到该图像,并能够运行泊坞窗命令内形成。我如何启动安装的docker实例?

+0

你可能想检查一下:https://github.com/jpetazzo/dind/blob/master/Dockerfile –

回答

1

您只能安装docker客户端二进制文件并与容器和主机共享dockerd

下面是一个例子Dockefile:

FROM openjdk:8 

# Install your dependencies 
# ... 

# Install curl 
RUN apt-get update && apt-get install -y \ 
    curl \ 
    && rm -rf /var/lib/apt/lists/* 

# Install docker client  
ENV DOCKER_CHANNEL stable 
ENV DOCKER_VERSION 17.03.1-ce 
ENV DOCKER_API_VERSION 1.27 
RUN curl -fsSL "https://download.docker.com/linux/static/${DOCKER_CHANNEL}/x86_64/docker-${DOCKER_VERSION}.tgz" \ 
    | tar -xzC /usr/local/bin --strip=1 docker/docker 

构建图像:

$ docker build -t docker-client . 

运行有安装/var/run/docker.sock码头工人容器,然后就可以在容器中使用搬运工命令:

$ docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock docker-client /bin/bash 
[email protected]:/# docker version 
Client: 
Version:  17.03.1-ce 
API version: 1.27 
Go version: go1.7.5 
Git commit: c6d412e 
Built:  Mon Mar 27 16:58:30 2017 
OS/Arch:  linux/amd64 

Server: 
Version:  17.05.0-ce 
API version: 1.29 (minimum version 1.12) 
Go version: go1.7.5 
Git commit: 89658be 
Built:  Thu May 4 21:43:09 2017 
OS/Arch:  linux/amd64 
Experimental: false 

请注意,注意docker.sock意味着临时允许容器访问码头主机。请注意,存在潜在的安全风险。

+0

感谢您的回复!访问Docker主机的容器不是问题,因为它只用于构建和运行测试。一旦完成,我们将不会在docker中使用docker! – sparkr

2

我会推荐你​​使用官方的“dind”图片(docker中的docker):https://hub.docker.com/_/docker/。但是,您需要重写Dockerfile。

FROM docker:dind-stable 
# Install your stuff 

而且,考虑到这一点:

虽然一般不建议运行多克尔内码头工人,也有一些合法使用的情况下,如码头工人自身的发展。