Я создаю контейнер для Podman
который запускает Samba Active Directory в качестве основного контроллера домена и с бэкэндом Bind DNS.
Он основан на предыдущем контейнере, который я сделал, в котором были сопоставления томов как с Samba, так и с Bind, и который я запустил и запустил, но я подумал, что он выглядит немного запутанным и станет еще более запутанным, когда я также хочу сделать резервную копию запуска конфигурации Active Directory внутри контейнера.
Поэтому моя цель — переместить все файлы, связанные с Samba и Bind, в новое место, поэтому мне нужно только отобразить один том и создать символические ссылки, чтобы сохранить навигацию.
Моя идея состоит в том, чтобы использовать /srv
папку в качестве корня для моих файлов конфигурации и создайте следующую структуру символической ссылки:
/etc/krb5.keytab -> /srv/conf/etc/krb5.keytab
/etc/krb5.conf -> /srv/conf/etc/krb5.conf
/etc/bind/ -> /srv/conf/etc/bind/
/etc/samba/ -> /srv/conf/etc/samba/
/var/lib/samba/ -> /srv/conf/lib/
Кроме того, я также сделал путь к папке /srv/backup
из-за того, что я хочу разместить резервные копии из samba-tool
чтобы приземлиться в этой папке, так как он может быть получен хостом Podman в рамках процедуры резервного копирования.
С этой целью у меня есть среди прочего следующие строки в моем Dockerfile
:
# Use Ubuntu 22.04 LTS as base for my container
FROM ubuntu:jammy
ENV DEBIAN_FRONTEND noninteractive
# Avoid ERROR: invoke-rc.d: policy-rc.d denied execution of start.
RUN echo "#!/bin/sh\nexit 0" > /usr/sbin/policy-rc.d
# Try creating a single mount point
VOLUME ["/srv"]
# Setup ssh and install supervisord
RUN apt-get update
RUN apt-get upgrade -y
# Install bind9 dns server
RUN apt-get install -y bind9 dnsutils
# Add customized Bind options to default bind install location.
# Note:
# Assume Dockerfile is placed at /workdir/Dockerfile
#
# Then "etc/bind/named.conf.options" is placed at
# /workdir/etc/bind/named.conf.options
#
# The second argument is where should the file be placed
# inside the countainer.
ADD etc/bind/named.conf.options /etc/bind/named.conf.options
# Install samba and dependencies to make it an Active Directory Domain Controller
RUN apt-get install -y samba smbclient winbind libpam-winbind libnss-winbind krb5-kdc libpam-krb5
# Skipping a bit of the Dockerfile here, since it is not relevant
# for the question.
#
# Create backup dir that is being used by samba-tool
# inside the container to store backups of samba.
RUN mkdir -p /srv/backup
# Create folder for all files in /etc folder that
# can be modified during running of container.
#
# The '-p' argument creates any missing parent folder, like
# if /etc/conf does not exist it will created at the same time as
# /etc/conf/etc folder.
RUN mkdir -p /srv/conf/etc
# Move configuration of Bind and Samba to a folder that can be
# saved between reboots.
RUN mv /etc/bind /srv/conf/etc/
RUN mv /etc/samba /srv/conf/etc/
# Add symlinks so Bind and Samba configuration can be accessed
# from /etc folder
RUN ln -s /srv/conf/etc/bind /etc/bind
RUN ln -s /srv/conf/etc/samba /etc/samba
# Add folder for Samba lib files than can be saved between reboots.
RUN mkdir -p /srv/conf/lib
# Move Samba lib files to the new lib folder.
RUN mv /var/lib/samba/* /srv/conf/lib/
# Delete old lib folder as the folder name 'samba' was not moved.
RUN rm /var/lib/samba/'
# Make symlink so Samba lib files can be access via /var/lib/samba
RUN ln -s /srv/conf/lib /var/lib/samba
Выше приведено большинство строк в моем файле Dockerfile, хотя несколько строк были опущены из-за того, что они не имеют отношения к вопросу.
Однако. Когда я пытаюсь собрать контейнер с помощью Ansible, я получаю следующую ошибку во время сборки:
fatal: [buildserver.example.com]: FAILED! => {"changed": false, "msg": "Failed to build
image samba-ad2:latest:
mv: cannot move '/etc/bind' to '/srv/conf/etc/': No such file or directory
Error: error building at STEP \"RUN mv /etc/bind /srv/conf/etc/\":
error while running runtime: exit status 1\n"}
Код ошибки отформатирован для удобочитаемости.
Я уверен, что делаю опечатки в своем Dockerfile, но какие опечатки?
докер контейнеры подман
Лассе Майкл Молгард