使用 Docker 上的 Samba ADDC 进行主/从配置的方法(使用 Rsync)
虽然进展不太顺利,但还是先放上去吧
Dockerを使用してコンテナ内にSamba Active Directory Domain Controller(Samba AD DC)をインストールする手順を以下に示します。
Dockerのインストール:
もしまだDockerがインストールされていない場合、Ubuntuコンテナ内にDockerをインストールします。以下のコマンドを使用します:
sudo apt update
sudo apt install docker.io
systemctl start docker
systemctl enable docker
次に、下記を参考に設定
dockerコマンドはデフォルトではroot権限なしには叩けないようになっています。 そこでdockerグループにユーザーを追加し、sudoなしでも叩けるようにしましょう。
首先执行以下操作,将当前登录用户添加到docker组。
sudo gpasswd -a $(whoami) docker
接下来给docker.sock文件赋予组写入权限。然后重新登录一次。
sudo chgrp docker /var/run/docker.sock
gnome-session-quit
最後にdocker daemonを再起動します。
sudo service docker restart
以下はプライマリーでの設定
コンテナの作成と起動:
Dockerコンテナ内にUbuntu-sambaを作成し、それを起動します。
docker run -it –name ubuntu-samba ubuntu /bin/bash
以下错误
shell docker:尝试连接到Unix套接字的Docker守护进程时被拒绝访问权限,套接字位于unix:///var/run/docker.sock:在/var/run/docker.sock上发布”http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/create?name=ubuntu-samba”时拨号出错:访问被拒绝。
使用以下命令解决。
sudo chmod 666 /var/run/docker.sock
重新创建容器
-
- 在容器内安装Samba AD DC:
-
- 在容器内安装Samba,并设置Samba AD DC。
-
- docker exec -it ubuntu-samba /bin/bash
-
- # 在容器内进行操作
-
- apt update
-
- apt install -y samba
-
- samba-tool domain provision
执行以上命令后,将启动Samba AD DC的设置向导,并要求输入必要的信息。请提供正确的信息以继续进行设置。
以下错误:
ERROR():配置失败 – ProvisioningError:在提供的/etc/samba/smb.conf未指定’realm =’。请移除smb.conf文件并让配置生成它。
文件“/usr/lib/python3/dist-packages/samba/netcmd/domain.py”的第493行,在其中运行
result = provision(self.logger,
文件“/usr/lib/python3/dist-packages/samba/provision/init.py”的第2231行,在其中运行
names = guess_names(lp=lp, hostname=hostname, domain=domain,
文件“/usr/lib/python3/dist-packages/samba/provision/init.py”的第625行,在其中运行
raise ProvisioningError(“guess_names: ‘realm =’在提供的%s中未指定。请移除smb.conf文件并让配置生成它” %lp.configfile)
一度コンテナをexitした場合、下記を実行する
sudo docker container start ubuntu-samba
コンテナ移動
https://qiita.com/u_89/items/a9cdbfda2be45178bbee
samba addc設定例
https://qiita.com/u_89/items/979160a3be8bd7487bab
-
- 开始Samba AD DC服务:
-
- 完成Samba AD DC安装后,启动服务。
-
- service smbd start
设置服务的自动启动:
在服务器重新启动时,自动启动Samba AD DC服务。
service smbd enable
これで、Samba AD DCがコンテナ内でセットアップされました。他のコンピュータをこのSambaドメインに参加させることができます。セキュリティに注意して設定を行い、必要に応じてファイアウォールルールを設定してください。
Samba AD DCの状態を確認:
サービスが正常に実行されているか確認します。
service smbd status
結果
root@[container_id]:/# service smbd status
* smbd is running
注意: これは単純化された手順であり、特定のネットワーク環境やセキュリティ要件に合わせて設定を調整する必要があります。公式Sambaドキュメンテーションを参照して詳細な情報を取得してください。
以下はRsyncのインストールコマンド
rsyncはLinuxやUnix系のオペレーティングシステムで一般的に使用されており、通常は事前にインストールされています。ただし、インストールされていない場合は、以下の手順に従ってrsyncをインストールできます。
apt-get update
apt-get install rsync
以下はセカンダリーでの設定
-
- 创建和启动容器:
-
- 在Docker容器内创建Ubuntu-samba,并启动它。
-
- docker run -it –name ubuntu-samba2 ubuntu2 /bin/bash
在容器内安装Samba AD DC:
在容器内安装Samba,并设置Samba AD DC。
# 在容器内操作
apt update
apt install -y samba
在容器内加入Samba AD DC:
samba-tool domain join EXAMPLE.COM DC
-U”EXAMPLE\Administrator” —
realm=EXAMPLE.COM —
server=[主要的IP地址]
下記エラー
ERROR: Failed to find a writeable DC for domain ‘EXAMPLE.COM’: The object name is not found. bash: -UEXAMPLE\Administrator: command not found bash: –: command not found
コンテナ内でpingのインストール
apt-get install iputils-ping
-
- サイト設定を変更して、2つのドメインコントローラーが異なるサイトに所属していることを確認します。
-
- samba-tool drs showrepl
必要に応じてDNS設定を確認および設定します。
cat /etc/resolv.conf
ファイル同期やレプリケーションの設定など、アクティブディレクトリ環境に関する他の設定を行います。
データの同期
コンテナ間のRsyncを使用してデータを同期する具体的な例を示します。以下の手順は、2つのDockerコンテナ(ubuntu-sambaとubuntu-samba2)間でデータを同期する方法を説明します。既にコンテナが存在する場合の例です。
前提条件:
-
- Dockerがインストールされていること。
rsyncがubuntu-sambaとubuntu-samba2コンテナの両方にインストールされていること。
请确认 Ubuntu-Samba 容器和 Ubuntu-Samba2 容器正在运行中。
docker ps
このコマンドを実行して、ubuntu-sambaコンテナとubuntu-samba2コンテナが実行中であることを確認します。
2. ubuntu-samba2コンテナからubuntu-sambaコンテナにデータを同期します。
以下的命令是在ubuntu-samba2容器中将数据同步到ubuntu-samba容器的示例。
docker exec -it ubuntu-samba2 rsync -av /data/ ubuntu-samba:/data/
このコマンドは、ubuntu-samba2コンテナ内でrsyncを実行し、ubuntu-samba2コンテナの /data/ ディレクトリからubuntu-sambaコンテナの /data/ ディレクトリにデータを同期します。-a オプションはアーカイブモードで、ファイルの属性やタイムスタンプも保持してコピーします。-v オプションは詳細な出力を表示しますが、必要に応じて省略できます。
これで、ubuntu-samba2からubuntu-sambaにデータが同期されます。同様に、反対の方向でデータ同期を行うには、必要なrsyncコマンドを実行します。
反対の方向でデータを同期するには、ubuntu-sambaコンテナからubuntu-samba2コンテナにデータを同期する手順を実行します。以下がその例です:
1. ubuntu-sambaコンテナからubuntu-samba2コンテナにデータを同期します。
以下のコマンドは、ubuntu-sambaコンテナ内からubuntu-samba2コンテナにデータを同期する例です。
docker exec -it ubuntu-samba rsync -av /data/ ubuntu-samba2:/data/
这个命令在ubuntu-samba容器内执行rsync命令,将ubuntu-samba容器的/data/目录与ubuntu-samba2容器的/data/目录进行数据同步。-a选项是以归档模式进行拷贝,可以保留文件的属性和时间戳。-v选项用于显示详细输出,可根据需要省略。
通过这个方法,数据将从ubuntu-samba同步到ubuntu-samba2。根据需要,您可以调整rsync选项以自定义数据同步的反向方向。
通过按照以上步骤,在Docker上安装两台Samba AD-DC服务器,并使用rsync同步数据。为保持数据的一致性,请使用适当的rsync选项。