Kubernetes 的 MySQL Operator 手冊  /  私有映像檔儲存庫  /  使用 Docker 將映像檔複製到私有映像檔儲存庫

6.3 使用 Docker 將映像檔複製到私有映像檔儲存庫

使用氣隙或授權映像檔以避免從網際網路提取映像檔是另一種使用案例,此處將說明。

注意

Kubernetes 的 MySQL Operator 需要以下三個容器映像檔才能運作:Kubernetes 的 MySQL Operator、MySQL Router 和 MySQL Server。

  1. 選擇所需的 Kubernetes 的 MySQL Operator 版本。例如,latest 定義於 helm/mysql-operator/Chart.yaml 中。例如,9.0.0-2.2.0

  2. 執行 docker pull container-registry.oracle.com/mysql/community-operator:VERSION,其中 VERSION 是所需的 Kubernetes 的 MySQL Operator 版本。

  3. 執行 docker save container-registry.oracle.com/mysql/community-operator:VERSION -o mysql-operator.tar 以匯出容器映像檔,其中 VERSION 是所需的 Kubernetes 的 MySQL Operator 版本。

  4. mysql-operator.tar 複製到可存取私有儲存庫的主機。

  5. 執行 docker load -i mysql-operator.yaml,將映像檔載入該主機上的本機 Docker 快取。

  6. 執行 docker tag mysql/mysql-server:VERSION registry:port/repo/mysql-server:VERSION,重新標記映像檔,以準備推送至私有儲存庫;請相應調整 VERSION。

  7. 執行 docker push registry:port/repo/mysql-server:VERSION,將新建立的標籤推送至私有儲存庫;請相應調整 VERSION。

  8. 如果您不需要從匯入主機快取中的映像檔,則可以使用 docker rmi mysql/mysql-operator:VERSION registry:port/repo/mysql-server:VERSION 將其刪除。這會從主機中移除,但不會影響儲存庫本身。請相應調整 VERSION。

或者,您可以使用下列命令來以一個命令提取和推送。在具有 Oracle Container Registry (OCR) 存取權的主機上執行。如果適用,此主機還需要存取可存取私有儲存庫的安全 (堡壘) 主機。修改變數值以符合您的需求。該命令不會耗用 tarball 的本機空間,而是會透過 SSH 串流容器映像檔。

export BASTION_USER='k8s'
export BASTION_HOST='k8'
export REGISTRY="..." # for example 192.168.20.199:5000
export REPOSITORY="..." # for example mysql
export OPERATOR_VERSION=$(grep appVersion helm/mysql-operator/Chart.yaml | cut -d '"' -f2)
docker pull container-registry.oracle.com/mysql/community-operator:$OPERATOR_VERSION
docker save container-registry.oracle.com/mysql/community-operator:$OPERATOR_VERSION | \
    ssh $BASTION_USER@$BASTION_HOST \
         "docker load && \
          docker tag container-registry.oracle.com/mysql/community-operator:$OPERATOR_VERSION $REGISTRY/$REPOSITORY/mysql-operator:$OPERATOR_VERSION && \
          docker push $REGISTRY/$REPOSITORY/mysql-operator:$OPERATOR_VERSION && \
          docker rmi container-registry.oracle.com/mysql/community-operator:$OPERATOR_VERSION $REGISTRY/$REPOSITORY/mysql-operator:$OPERATOR_VERSION"
docker rmi container-registry.oracle.com/mysql/community-operator:$OPERATOR_VERSION