3.3 部署 iManager 容器

eDirectory Docker 影像的作業系統基本影像是 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 run 命令上使用 --memory 旗標,Docker 容器可確定固定限制適用於容器所使用的記憶體。

    • 透過在 Docker run 命令上使用 --cpuset-cpus 旗標,Docker 容器可確定限制會套用到執行中容器使用的 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)

    如需如何新增和卸除功能的詳細資訊,請參閱執行時期權限與 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 網路的相關資訊,請參閱設定網路。

下列範例顯示如何使用主機網路驅動程式設定 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。如需如何在覆蓋網路中部署容器的詳細資訊,請參閱使用覆蓋網路。

將 iManager 容器部署在使用者定義的覆蓋網路中之前,您必須考慮以下建議:

  • 必須將 eDirectory 容器與 iManager 容器部署在相同的覆蓋網路中。

  • 如果是要從 Docker 覆蓋網路外來存取容器連接埠,您必須發佈這些連接埠。Docker 預設會在為萬用 IP 位址的 0.0.0.0 上發佈容器連接埠。藉由使用這個萬用位址,即可符合主機機器上任何可能的內送連接埠。應使用下列 Docker 執行選項,讓 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 是在 Docker Swarm 中覆蓋網路的名稱,其中部署 eDirectory 容器。如需如何在 Docker Swarm 中設定覆蓋網路的詳細資訊,請參閱使用覆蓋網路。

圖 3-2 將 iManager 容器部署在使用者定義的覆蓋網路中