本頁說明如何在支援容器執行階段的任何 Linux VM 上,執行 AlloyDB Omni 的單一執行個體安裝作業。如需 AlloyDB Omni 的多執行個體設定,請參閱高可用性和資料復原能力。
事前準備
在 VM 上安裝 AlloyDB Omni 前,請先完成下列工作:
- 請參閱「規劃在 VM 上安裝 AlloyDB Omni」。
- 請參閱「執行 AlloyDB Omni (需要或不需要根目錄)」,並根據所選環境完成必要步驟。
以有根或無根模式執行 AlloyDB Omni
您可以使用 Docker 或 Podman 執行 AlloyDB Omni。這兩種容器引擎都可以以 rootful 或 rootless 模式執行。「Rootful」是指以 root 使用者身分執行 Docker 或 Podman,而「rootless」則是指以非 root 或無權限使用者身分執行。
選擇模式時,請考量環境需求和偏好設定。如果簡單易用是你的首要考量,那麼 Rootful 或許就是適合你的工具。如果您需要無權限使用者的安全性,無根可能就是正確的選擇。
如果您決定執行具備根層級權限的環境,則必須決定如何管理容器與主機之間的對應使用者。實際上,AlloyDB Omni 會以 postgres 使用者身分執行程序,該使用者具有 999 的 UID 和 GID。也就是說,您有兩種管理使用者對應的方式:
- 不採取任何行動。postgres仍不會對應至主機上的任何使用者。
- 使用 999的 UID 和 GID 建立使用者和使用者群組,以便postgres對應至該使用者和使用者群組。
在無根環境中,postgres 會對應至主機使用者和使用者群組可存取的子 UID 和子 GID (如 /etc/subuid 和 /etc/subgid 檔案中所定義)。這表示您不需要管理使用者對應。
(無根) 設定子 UID 和子 GID 範圍
如果 Linux 映像檔尚未為無權限使用者設定子 UID 和子 GID 範圍,您必須設定這些範圍,才能執行 AlloyDB Omni 無根模式。
- 如果使用 Debian 系統,請安裝 - newuidmap和- newgidmap二進位檔。- apt-get install -y uidmap 
- 為無根使用者新增 - subuid項目。- echo "ROOTLESS_USER:SUB_UID_RANGE_START:SUB_UID_RANGE_COUNT" >> /etc/subuid - 請替換下列變數: - ROOTLESS_USER:要用來執行 AlloyDB Omni 的使用者。
- SUB_UID_RANGE_START:要為使用者註冊的子 UID 範圍下限。
- SUB_UID_RANGE_COUNT:要為使用者註冊的子 UID 數量。這個值不得小於 999。
 
- 為無根使用者新增 - subgid項目。- echo "ROOTLESS_USER:SUB_GID_RANGE_START:SUB_GID_RANGE_COUNT" >> /etc/subgid - 請替換下列變數: - ROOTLESS_USER:要用來執行 AlloyDB Omni 的使用者。
- SUB_GID_RANGE_START:要為使用者註冊的子 GID 範圍下限。
- SUB_GID_RANGE_COUNT:要為使用者註冊的子 GID 數量。這個值不得小於 999。
 
- 如要讓 AlloyDB Omni 執行個體在使用者未登入時執行,請執行下列指令。 - loginctl enable-linger ROOTLESS_USER - 請替換下列變數: - ROOTLESS_USER:要用來執行 AlloyDB Omni 的使用者。
 
- 如果您使用 Docker,請以 ROOTLESS_USER 身份執行下列指令。 - /usr/bin/dockerd-rootless-setuptool.sh install 
- 開啟新的殼層,讓子 UID 和子 GID 變更生效。 
建立 AlloyDB Omni 儲存資料的目錄
如果使用的儲存系統不只執行 AlloyDB Omni,您可以在裝置的現有檔案系統上建立 AlloyDB Omni 目錄。否則,您可以在專屬裝置上建立新的檔案系統。
現有檔案系統
Docker
mkdir -p DATA_DIR
Docker
mkdir -p DATA_DIRPodman
mkdir -p DATA_DIR
Podman
mkdir -p DATA_DIR請替換下列變數:
- DATA_DIR:儲存資料的主機目錄路徑。
專用裝置
- 在主機上建立磁碟掛接目錄。 - mkdir -p MOUNT_POINT - 請替換下列變數: - MOUNT_POINT:應包含 AlloyDB Omni 執行個體的頂層目錄路徑。
 
- 在磁碟裝置上建立具有單一分區的 GPT 分區資料表。 - parted -s DEVICE_PATH mklabel gpt- parted -s DEVICE_PATH mkpart primary 0% 100%- 請替換下列變數: - DEVICE_PATH:作業系統指派給磁碟裝置的路徑。
 
- 在磁碟裝置上建立檔案系統。建議您為 AlloyDB Omni 使用 - ext4檔案系統。- mkfs.ext4 -q -m 1 -L FS_LABEL -F PARTITION_PATH - 請替換下列變數: - FS_LABEL:檔案系統的標籤。- ext4檔案系統標籤的長度上限為 16 個字元。
- PARTITION_PATH:用於儲存容器資料的磁碟分割區路徑。
 
- 掛接裝置,並在 - /etc/fstab檔案中建立項目,以便在重新啟動後掛接磁碟。- echo -e "LABEL=FS_LABEL\tMOUNT_POINT\text4\tdefaults\t0 0" | tee -a /etc/fstab- systemctl daemon-reload- mount MOUNT_POINT- 請替換下列變數: - FS_LABEL:檔案系統的標籤。- ext4檔案系統標籤的長度上限為 16 個字元。
- MOUNT_POINT:應包含 AlloyDB Omni 執行個體的頂層目錄路徑。
 
- 在容器專屬檔案系統中建立資料目錄。 - Rootful- mkdir -p DATA_DIR - 無根- mkdir -p DATA_DIR- chown ROOTLESS_USER:ROOTLESS_GROUP DATA_DIR- 請替換下列變數: - DATA_DIR:儲存資料的主機目錄路徑。
- ROOTLESS_USER:如果您使用無根環境,這個使用者就是您要擁有目錄的使用者。
- ROOTLESS_GROUP:如果您使用無根環境,這個群組就是您想擁有目錄的群組。
 
建立容器
Docker
docker run -d --name CONTAINER_NAME \ -e POSTGRES_PASSWORD=NEW_PASSWORD \ -v DATA_DIR:/var/lib/postgresql/data \ -p HOST_PORT:5432 \ --restart=always \ google/alloydbomni:latest
Docker
docker run -d --name CONTAINER_NAME \ -e POSTGRES_PASSWORD=NEW_PASSWORD \ -v DATA_DIR:/var/lib/postgresql/data \ -p HOST_PORT:5432 \ --restart=always \ google/alloydbomni:latest
Podman
podman run -d --name CONTAINER_NAME \ -e POSTGRES_PASSWORD=NEW_PASSWORD \ -v DATA_DIR:/var/lib/postgresql/data \ -p HOST_PORT:5432 \ --restart=always \ docker.io/google/alloydbomni:latest
Podman
podman run -d --name CONTAINER_NAME \ -e POSTGRES_PASSWORD=NEW_PASSWORD \ -v DATA_DIR:/var/lib/postgresql/data \ -p HOST_PORT:5432 \ --restart=always \ docker.io/google/alloydbomni:latest
請替換下列變數:
- CONTAINER_NAME:您在「建立 AlloyDB Omni 儲存資料的目錄」中使用的目錄名稱。
- NEW_PASSWORD:新容器建立後,系統會為容器的- postgres使用者指派密碼。
- DATA_DIR:儲存資料的主機目錄路徑。
- HOST_PORT:容器應將自己的通訊埠- 5432發布至主機的 TCP 通訊埠。如要在主機上使用 PostgreSQL 預設通訊埠,請指定- 5432。
連線至執行個體
視環境而定,您可以在本機或遠端連線至 AlloyDB Omni 執行個體。
在本機連線
Docker
docker exec -it CONTAINER_NAME psql -U postgres
Docker
docker exec -it CONTAINER_NAME psql -U postgres
Podman
podman exec -it CONTAINER_NAME psql -U postgres
Podman
podman exec -it CONTAINER_NAME psql -U postgres
請替換下列變數:
- CONTAINER_NAME:您在「建立 AlloyDB Omni 儲存資料的目錄」中使用的目錄名稱。
遠端連線
psql -U postgres -p HOST_PORT -h IP_ADDRESS_OR_FQDN
請替換下列變數:
執行這項指令後,系統會要求您輸入postgres帳戶的密碼。輸入您在「建立容器」中使用的密碼。