У меня есть контейнер Jenkins, работающий внутри Docker, и я хочу использовать этот контейнер Jenkins для запуска других контейнеров Docker при выполнении интеграционных тестов и т. Д.
Итак, мой план состоял в том, чтобы установить Docker в контейнер, но, похоже, это не так хорошо для меня. Мой Dockerfile выглядит примерно так:
FROM jenkins
MAINTAINER xxxx
# Switch user to root so that we can install apps
USER root
RUN apt-get update
# Install latest version of Docker
RUN apt-get install -y apt-transport-https
RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
RUN sh -c "echo deb https://get.docker.com/ubuntu docker main > /etc/apt/sources.list.d/docker.list"
RUN apt-get update
RUN apt-get install -y lxc-docker
# Switch user back to Jenkins
USER jenkins
Образ jenkins
основан на Debian Jessie. Когда я запускаю терминал bash внутри контейнера на основе сгенерированного изображения и делаю, например:
docker images
Я получаю следующее сообщение об ошибке:
FATA[0000] Get http:///var/run/docker.sock/v1.16/images/json: dial unix /var/run/docker.sock: no such file or directory. Are you trying to connect to a TLS-enabled daemon without TLS?
Подозреваю, что это могло быть из-за того, что служба докеров не запущена. Но моя следующая проблема возникает, когда я пытаюсь запустить службу:
service docker start
Это дает мне следующую ошибку:
mount: permission denied
Я отследил ошибку в /etc/init.d/docker
в этой строке:
mount -t tmpfs -o uid=0,gid=0,mode=0755 cgroup /sys/fs/cgroup
Итак, мои вопросы:
- Как мне запустить хост Docker внутри контейнера? Или этого следует избегать?
- Что мне нужно сделать, если я использую Mac и boot2docker?
- Возможно, мне следует вместо этого связать Docker на хост-машине, как описано здесь?
Обновление: я пробовал контейнер как пользователь root и jenkins. sudo
не устанавливается.