Как я могу установить Docker внутри альпийского контейнера?

Как установить Docker внутри контейнера alpine и запустить образы Docker? Я мог установить, но не мог запустить докер, и во время работы получаю «команда docker не найдена ошибка».


person Subit Das    schedule 08.01.2019    source источник


Ответы (2)


Dockerfile для запуска docker-cli внутри alpine

FROM alpine:3.10
RUN apk add --update docker openrc
RUN rc-update add docker boot

Собрать докер-образ

docker build -t docker-alpine .

Запуск контейнера (хост и контейнер alipne будут использовать один и тот же механизм Docker)

docker run -it -v "/var/run/docker.sock:/var/run/docker.sock:rw" docker-alpine:latest /bin/sh
person sai anudeep    schedule 10.09.2019
comment
Могу ли я каким-либо образом переместить монтирование части тома в файл Dockerfile. поэтому, как только я запускаю интерактивный сеанс терминала, докер работает нормально ?? - person mygitrepo; 04.01.2021
comment
@mygitrepo Нет, монтирование привязки - это параметры времени выполнения. Ваш единственный шанс - включить TCP на демоне докера (или сделать обратный прокси-сервер для сокета unix) и использовать флаг -H (который вы можете установить с помощью ENTRYPOINT) - person Robin Thoni; 21.02.2021

Все, что вам нужно, это установить Docker CLI в образ на основе Alpine и запустить монтирование контейнера docker.sock. Он позволяет запускать одноуровневые контейнеры Docker с помощью Docker Engine хоста. Он известен как Docker-out-of-Docker и считается хорошей альтернативой запуску отдельного Docker Engine внутри контейнера (он же Docker-in-Docker).

Файл Docker

FROM alpine:3.11

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

Создайте образ:

docker build -t alpine-docker .

Запускаем контейнер, монтирующий docker.sock (-v /var/run/docker.sock:/var/run/docker.sock):

docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock alpine-docker docker ps

Приведенная выше команда должна успешно запустить docker ps внутри контейнера на основе Alpine.

person Evgeniy Khyst    schedule 04.02.2020
comment
Могу ли я каким-либо образом переместить монтирование части тома в файл Dockerfile. поэтому, как только я запускаю интерактивный сеанс терминала, докер работает нормально ?? - person mygitrepo; 04.01.2021
comment
@mygitrepo - вы можете использовать docker-compose, чтобы сделать что-то подобное. Вы можете определить там монтирование, а затем просто использовать docker-compose run --rm alpine-docker-svc Файл docker-compose будет выглядеть так (извините, в комментариях SO нет новых строк): ` version: '3' services: alpine-docker-svc: build: . тома: - /var/run/docker.sock:/var/run/docker.sock ` - person saraf.gahl; 30.05.2021