docker-compose внутри Alpine контейнера - PullRequest
0 голосов
/ 15 февраля 2019

Я пытаюсь связать мое приложение (код, файлы Dockerfiles и сценарий docker-compose) вместе в одном образе для простого развертывания (точка входа будет docker-compose up).Мой Dockerfile для этого образа приложения верхнего уровня выглядит следующим образом

FROM alpine:latest
COPY . /app
RUN apk update && apk add --no-cache docker py-pip openrc && pip install docker-compose

Когда я запускаю этот образ, кажется, что dockerd не запустился, поскольку отсутствует в результатах top;docker ps сообщает: «Не удается подключиться к демону Docker в unix: ///var/run/docker.sock. Работает ли демон Docker?».Если, однако, я делаю service docker start, возвращается «* ПРЕДУПРЕЖДЕНИЕ: докер уже запущен».Есть ли что-то особенное, что мне нужно сделать, чтобы Docker работал над контейнером Alpine?

1 Ответ

0 голосов
/ 15 февраля 2019

Docker состоит из демона docker, который запускает все сервисы, и CLI, используемых для взаимодействия с демоном (хорошо, есть много других частей, но они наиболее важны).Установка docker-compose не устанавливает демон, независимо от того, какое сообщение вы получаете от команды service.

Чтобы использовать docker внутри контейнера, вы должны использовать docker-in-docker image.Это называется docker:dind.Наследуй от него (вместо alpine) и наслаждайся.

Но прежде чем читать эту статью , которая объясняет, почему это не лучшая идея, и каковы другие способы использования докера внутри контейнера(совет: вы можете вызвать демон docker хоста изнутри контейнера, просто установив сокет /var/run/docker.sock:/var/run/docker.sock).

...