eDirectory Docker 映像的 OS 基本映像是 openSUSE Leap 15.1。iManager 映像 tar 文件应下载到 Docker 主机,必须使用以下命令将映像装载到本地 Docker 注册表:
# tar xf iManager_320.tar.gz # docker load --input iman320.tar
上述命令会装载名为 imanager:3.2.0 的 Docker 映像。
部署 iManager 之前,您必须考虑以下建议:
Docker 容器默认没有任何资源限制。这为每个容器提供了主机内核所提供的所有 CPU 和内存资源的访问权限。您还必须通过设置容器可使用的资源量限制,确保一个正在运行的容器不会使用更多资源,致使其他正在运行的容器停止。
Docker 容器应在 Docker run 命令中使用 --memory 标志确保容器使用的内存应用了硬限制。
Docker 容器应在 Docker run 命令中使用 --cpuset-cpus 标志确保运行的容器所使用的 CPU 量应用了限制。
--pids-limit 应设置为 300 以限制任何指定时间容器内生成的内核线程的数量。这样是为了防止 DoS 攻击。
您必须在 Docker run 命令中使用 --restart 标志将故障容器重启动策略设置为 5。
Docker 容器通常有已启用 Linux 功能的默认列表。您必须确保仅为 iManager 容器启用以下功能,并删除其他功能:
AUDIT_WRITE
CHOWN
DAC_OVERRIDE
SETGID
SETUID
FOWNER
SYS_PTRACE(仅限使用利用 Linux ptrace 的实用程序时。例如 gdb)
关于如何添加和删除功能的更多信息,请参见 Runtime privilege and Linux capabilities(运行时特权和 Linux 功能)。
iManager.env 文件位于 iManager 容器中的 /etc/opt/novell/iManager/conf。具有参数默认值的示例配置文件如下所示:
# Certificate Public Key Algorithm # Allowed Values: RSA, ECDSA256, ECDSA384 CERTIFICATE_ALGORITHM=RSA # Cipher Suite # Allowed Values: # For RSA - NONE, LOW, MEDIUM HIGH # For ECDSA256 - SUITEB128ONLY # For ECDSA384 - SUITEB128, SUITEB192 CIPHER_SUITE=NONE # Tomcat Server HTTP Port TOMCAT_HTTP_PORT=8080 # Tomcat Server SSL Port TOMCAT_SSL_PORT=8443 # iManager Authorized User (admin_name.container_name.tree_name) AUTHORIZED_USER=
要启动上述任意参数具有非默认值的 iManager 容器,应在 Docker 主机文件系统中创建 iManager.env 文件,并使用 --volume 选项将其绑定装入到 iManager 容器内的 /etc/opt/novell/iManager/conf 路径。例如,
docker run --name=iMan320 --volume /path/to/iManager.env:/etc/opt/novell/iManager/conf/iManager.env imanager:3.2.0
启动容器后可以通过编辑 /path/to/iManager.env 文件修改参数,然后重启动容器。要更改正在运行的容器的配置,执行以下步骤:
修改 /path/to/iManager.env 文件。
使用 docker restart iMan320 重启动容器
iManager Docker 容器支持主机和覆盖网络驱动程序以在多主机 Docker 环境中部署:
可使用主机网络驱动程序配置 iManager 容器,以访问部署在网络上的 eDirectory 服务器。有关 Docker 网络的信息,请参见 Configure Networking(配置联网)。
以下示例显示如何使用主机网络驱动程序配置 iManager 容器:
docker run -it --name=iMan320 --net=host --restart on-failure:5 --memory="1000M" --cpuset-cpus="2" --volume iManager-volume:/config --volume /path/to/iManager.env:/etc/opt/novell/iManager/conf/iManager.env imanager:3.2.0
注:
--net=host 标志用于使用主机网络驱动程序部署容器。
在主机网络中部署 iManager 之前,应创建 iManager-volume。有关详细信息,请参见 管理 iManager 数据储存。
图 3-1 在主机网络中部署 iManager 容器
用户定义的覆盖网络可用于创建在多个 Docker 守护程序主机上运行的 eDirectory 容器的分布式网络。部署在此覆盖网络中的 iManager 容器可用于管理所有 eDirectory 服务器。可在 Linux 和 Windows 中部署用户定义的覆盖网络。确保 iManager Docker 主机与 eDirectory Docker 主机属于同一个 Docker Swarm。有关如何在覆盖网络中部署容器的更多信息,请参见 Use Overlay Networks(使用覆盖网络)。
在用户定义的覆盖网络中部署 iManager 容器之前,您必须考虑以下建议:
eDirectory 容器和 iManager 容器必须部署在同一覆盖网络中。
当从 Docker 覆盖网络外访问端口时,必须发布容器端口。Docker 默认在 0.0.0.0(通配符 IP 地址)上发布容器端口。这与主机上任何可能的进来的端口匹配。应使用以下 Docker run 选项使 Docker 容器在主机的特定接口上发布端口:
--publish <Host_IP Address>:host_port:container_port
以下示例显示如何在用户定义的覆盖网络中配置 iManager 容器:
docker run -it --name=iManager320 --net=eDir-overlay-nw --restart on-failure:5 --memory="1000M" --cpuset-cpus="2" --volume iManager-volume:/config --volume /path/to/iManager.env:/etc/opt/novell/iManager/conf/iManager.env --publish 443:8443 imanager:3.2.0
注:eDir-overlay-nw 是部署了 eDirectory 容器的 Docker Swarm 中覆盖网络的名称。有关如何在 Docker Swarm 中配置覆盖网络的更多信息,请参见使用覆盖网络。
图 3-2 在用户定义的覆盖网络中部署 iManager 容器