2017-06-28 99 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 

而且,考慮到這一點:

雖然一般不建議運行多克爾內碼頭工人,也有一些合法使用的情況下,如碼頭工人自身的發展。