3.3 部署 iManager 容器

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

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 环境中部署:

3.3.1 在主机网络中部署 iManager 容器

可使用主机网络驱动程序配置 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 容器

3.3.2 在用户定义的覆盖网络中部署 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 容器