Intereting Posts
Xdebug с PHP7 работает на удаленном экземпляре EC2 на контейнере Docker с nginx Как использовать Nomad с Nvidia Docker? Ошибка x509 при попытке войти в надежный (?) реестр докеров docker compose – добавить python в LAMP Использование изображения докеров для хранения файлов данных certbot.main: выход аномально Развертывание Java webapp для Tomcat 8, работающего в контейнере Docker Kubernetes удаляет секретную ошибку docker-registry Ошибка подключения к серверу: x509 ansible_default_ipv4.address undefined в docker ubuntu Как мой друг и я можем совместно использовать точную среду разработки в разных операционных системах? настроенное изображение Docker mongodb застревает: не может остановиться, убить, открыть Каков правильный способ обновления папки Ruby bin для контейнера докеров? Докер в Windows 10. E: Не удается найти пакет. Возвращает ненулевой код 123 Пряжа не работает на Dockerfile могу ли я использовать возможности для запуска сервисов роуминга докеров без создания?

Установите Docker с помощью 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 в это изображение и иметь возможность запускать форму команд докеров. Как запустить установленный экземпляр docker?

Вы можете установить только двоичный клиент docker client и совместно использовать 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 в контейнере:

 $ 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 означает, что контейнеру разрешен доступ к хосту докера. Имейте в виду, что существуют потенциальные риски для безопасности.

Я бы рекомендовал вам использовать официальное изображение «dind» (докер в докере): https://hub.docker.com/_/docker/ . Однако вам потребуется переписать файл Dockerfile.

 FROM docker:dind-stable # Install your stuff 

И, учтите это:

Хотя запуск Docker внутри Docker обычно не рекомендуется, есть некоторые законные варианты использования, такие как разработка самого Docker.