Как установить Docker внутри контейнера alpine и запустить образы Docker? Я мог установить, но не мог запустить докер, и во время работы получаю «команда docker не найдена ошибка».
Как я могу установить Docker внутри альпийского контейнера?
comment
Возможный дубликат Можно ли запускать докер из докера?< /а>
- person David Maze   schedule 09.01.2019
comment
Это почти повсеместно не рекомендуется и технически сложно, но теоретически возможно. Лучший вариант — использовать оркестратор более высокого уровня, такой как Docker Compose, и вообще не заставлять контейнеры пытаться запускать другие контейнеры. Если вы можете допустить, чтобы ваши контейнеры имели неограниченный корневой доступ к хосту, вы также можете предоставить им доступ к сокету Docker хоста.
- person David Maze   schedule 09.01.2019
Ответы (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
Могу ли я каким-либо образом переместить монтирование части тома в файл Dockerfile. поэтому, как только я запускаю интерактивный сеанс терминала, докер работает нормально ??
- person mygitrepo; 04.01.2021
@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
Могу ли я каким-либо образом переместить монтирование части тома в файл Dockerfile. поэтому, как только я запускаю интерактивный сеанс терминала, докер работает нормально ??
- person mygitrepo; 04.01.2021
@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