Установите Docker в Alpine Docker - PullRequest
0 голосов
/ 12 марта 2020

У меня есть Dockerfile с классическим c базовым образом Ubuntu, и я пытаюсь уменьшить его размер. Вот почему я использую базу Alpine.

В моем Dockerfile я должен установить Docker, поэтому Docker в Docker.

FROM alpine:3.9 

RUN apk add --update --no-cache docker

Это хорошо работает, я может запустить docker version внутри моего контейнера, по крайней мере, для клиента. Поскольку для сервера у меня есть ошибка classi c Docker, говорящая:

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

Я знаю в Ubuntu после установки Docker Я должен запустить

usermod -a -G docker $USER

Но что о в альпийском? Как я могу избежать этой ошибки?

PS:

Моя первая идея состояла в том, чтобы повторно использовать разъем Docker, например, путем крепления-крепления /var/run/docker.sock:/var/run/docker.sock и таким образом уменьшить размер моего image даже больше, так как мне не нужно переустанавливать Docker.

Но так как bind-mount не разрешен в Dockerfile, знаете ли вы, возможна ли моя идея и как это сделать? Я знаю, что это возможно в Docker -композиции, но мне нужно использовать только Dockerfile.

Спасибо

1 Ответ

0 голосов
/ 12 марта 2020

Вы можете сделать это, и ваша первая идея была верной: просто нужно выставить сокет docker (/var/run/docker.sock) для «управляющего» контейнера. Сделайте это так:

host:~$ docker run \
                  -v /var/run/docker.sock:/var/run/docker.sock \  
                  <my_image>
host:~$ docker exec -u root -it <container id> /bin/sh

Теперь контейнер должен иметь доступ к сокету (я предполагаю, что вы уже установили необходимые docker пакеты внутри контейнера):

root@guest:/# docker ps -a

CONTAINER ID        IMAGE                 COMMAND                  CREATED       ...
69340bc13bb2        my_image              "/sbin/tini -- /usr/…"   8 minutes ago ...

является ли это хорошая идея или нет, является спорным. Я бы предложил не делать этого, если есть способ избежать этого. Это дыра в безопасности, которая по существу выбрасывает в окно некоторые основные преимущества использования контейнеров: изоляция и контроль над повышением привилегий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...