Я настраиваю мастер Jenkins внутри контейнера Docker. Контейнер работает на хосте Ubuntu 16.04, который сам по себе является виртуальной машиной.
Мы используем NIS для аутентификации в Jenkins, но Я не могу запустить клиент NIS в контейнере. В моем Dockerfile я скопировал инструкция по настройке NIS на Ubuntu:
FROM jenkins
MAINTAINER John McGehee
# The base image set USER to jenkins
USER root
# Change user jenkins uid:pid from 1000:1000 to 7000:7000
RUN groupmod --gid 7000 jenkins
RUN usermod --gid 7000 --uid 7000 jenkins
# Make user jenkins more convenient
RUN mkdir -p /home/jenkins
run chown jenkins:jenkins /home/jenkins
RUN usermod --home /home/jenkins --shell /bin/bash jenkins --comment "Jenkins via Docker"
# Add user jenkins to group shadow so it can use NIS authentication
RUN usermod --groups shadow jenkins
# Set up NIS clients per https://help.ubuntu.com/community/SettingUpNISHowTo
RUN echo '10.10.10.11 infra1 infra1.wavesemi.com infra1.wavecomp.com' >> /etc/hosts
RUN echo '10.10.10.12 infra2 infra2.wavesemi.com infra2.wavecomp.com' >> /etc/hosts
RUN apt-get update
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get install --yes portmap nis
RUN echo 'wavesemi.com' > /etc/defaultdomain
RUN echo 'portmap : 10.10.10.11' >> /etc/hosts.allow
RUN echo 'portmap : 10.10.10.12' >> /etc/hosts.allow
RUN echo '+::::::' >> /etc/passwd
RUN echo '+:::' >> /etc/group
RUN echo '+::::::::' >> /etc/shadow
RUN echo 'ypserver infra1' >> /etc/yp.conf
RUN systemctl start nis
# Run user jenkins in container
USER jenkins
Затем я запустил Dockerfile:
sudo docker build -t myjenkins .
Команда RUN systemctl start nis
выдает ошибку:
Failed to get D-Bus connection: Unknown error -1
The command '/bin/sh -c systemctl start nis' returned a non-zero code: 1
но остальная часть Dockerfile работает успешно.
Когда я запускаю контейнер, он знает только пользователя jenkins
, как определено в контейнере /etc/passwd
.