代码之家  ›  专栏  ›  技术社区  ›  joesan

使用Dockerfile安装Docker

  •  4
  • joesan  · 技术社区  · 7 年前

    # 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,并能够在其中运行Docker命令。如何启动已安装的docker实例?

    2 回复  |  直到 7 年前
        1
  •  6
  •   Joshua Wade Abel    4 年前

    您可以安装 docker dockerd 容器和主机。

    Dockerfile :

    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 .
    

    运行带有安装的docker容器 /var/run/docker.sock ,然后可以在容器中使用docker命令:

    $ docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock docker-client /bin/bash
    root@c696b78206a8:/# 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 表示允许容器访问docker主机。请注意,存在潜在的安全风险。

        2
  •  3
  •   Robert    7 年前

    我建议您使用官方的“dind”图像(docker in docker): https://hub.docker.com/_/docker/

    FROM docker:dind-stable
    # Install your stuff
    

    考虑到这一点: