docker 搭建私有倉庫並行布私有映象

2023-07-17 06:00:32

本文為博主原創,轉載請註明出處:  

1.自建私有docker倉庫

  自建一個Docker倉庫,可以使用Docker官方提供的開源專案Docker Registry。以下是一些基本步驟:

  1. 安裝Docker Registry:

    • 在伺服器上安裝Docker引擎。

    • 使用以下命令拉取Docker Registry映象:docker pull registry:latest

  2. 建立Docker Registry容器:

    • 執行以下命令建立一個Docker Registry容器:

docker run -d -p 5000:5000 --restart=always --name registry registry:latest
  1. 設定Docker Registry:

  • 編輯/etc/docker/daemon.json檔案,新增以下內容,以允許Docker使用者端連線到自建的Docker Registry:

{
  "insecure-registries": ["your-registry-domain:5000"]
}
  • 重啟Docker守護行程:sudo systemctl restart docker

  1. 驗證Docker Registry是否正常執行:

  • 在本地或其他機器上執行以下命令,確保能夠連線到自建的Docker Registry:

docker login your-registry-domain:5000

  5.使用自建的Docker Registry:

  • 構建自己的Docker映象,併為其新增your-registry-domain:5000作為映象倉庫的字首,例如:

docker build -t your-registry-domain:5000/my-image:tag .

  推播映象到自建的Docker Registry:

docker push your-registry-domain:5000/my-image:tag

  現在,已經成功自建了一個Docker倉庫。其他機器可以使用相同的域名和埠連線到該倉庫,並拉取或推播映象。請注意,這裡只提供了一個簡單的自建Docker倉庫的範例,實際上還可以進行更高階的設定和安全性設定。

  6.推播和拉取映象:

    • 使用 docker push 命令將本地映象推播到私有倉庫。
    • 例如:docker push my-registry:5000/my-image:latest 將本地映象推播到私有倉庫中。
    • 使用 docker pull 命令從私有倉庫拉取映象。
    • 例如:docker pull my-registry:5000/my-image:latest 將從私有倉庫中拉取指定映象。

 2.公有倉庫和私有倉庫得使用和區分

  在使用 Docker 時,可以通過在映象名稱中指定倉庫地址來區分使用公有倉庫還是私有倉庫。

  1. 使用公有倉庫:

    • 預設情況下,當未指定倉庫地址時,Docker 會將映象看作是從 Docker Hub(公有倉庫)拉取的。
    • 使用 docker pull 命令時,只需提供映象名稱即可,例如 docker pull ubuntu:latest
  2. 使用私有倉庫:

    • 如果您要使用私有倉庫中的映象,需要在映象名稱中包含私有倉庫的地址。
    • 格式為 <registry-address>/<repository-name>:<tag>,其中 <registry-address> 是私有倉庫的地址,可以是 IP 地址或域名。
    • 使用 docker pull 命令時,指定私有倉庫中的映象名稱,例如 docker pull my-registry:5000/my-image:latest

  另外,在推播映象到私有倉庫時,也需要指定倉庫地址。使用 docker tag 命令將本地映象標記為要推播到的私有倉庫,並在推播時指定映象的倉庫地址。範例:

# 標記本地映象
docker tag my-local-image:latest my-registry:5000/my-image:latest

# 推播映象到私有倉庫
docker push my-registry:5000/my-image:latest

  通過指定映象名稱中的倉庫地址,可以明確使用公有倉庫還是私有倉庫中的映象。根據需要,切換到相應的倉庫進行操作。

3.本地釋出java服務映象

  1. 建立 Dockerfile:

    • 在 Java 服務專案的根目錄中建立一個名為 Dockerfile 的文字檔案。
    • 使用任何文字編輯器開啟 Dockerfile 檔案。
  2. 編寫 Dockerfile:

    • 在 Dockerfile 中編寫構建映象所需的指令。
    • 您需要選擇適當的基礎映象、複製檔案、安裝 Java 執行時環境等步驟。

  範例:

# 選擇基礎映象(例如 OpenJDK)
FROM openjdk:11-jre-slim

# 將服務 jar 包和組態檔複製到映象
COPY test.jar /app/
COPY config.properties /app/

# 設定工作目錄
WORKDIR /app

# 執行 Java 服務
CMD ["java", "-jar", "test.jar"]

  3.準備服務 JAR 包和組態檔:

    • 將 Java 服務的 JAR 包(例如 test.jar)和組態檔(例如 config.properties)放置在與 Dockerfile 相同的目錄下。

  4.構建映象:

    • 開啟終端或命令提示字元,並定位到包含 Dockerfile 的專案目錄
    • 使用 docker build 命令構建映象
    • 例如:docker build -t my-java-service:1.0 .
    • 注意:my-java-service 是映象的名稱,1.0 是標籤(版本號),. 表示使用當前目錄作為構建上下文

  5.檢視構建的映象:

    • 執行 docker images 命令檢視本地構建的映象列表。
    • 您應該能夠在列表中看到剛剛構建的映象。

  6.推播映象到私有倉庫:

    • 使用 docker push 命令將本地構建的映象推播到私有 Docker 倉庫。
    • 例如:docker push <registry-address>/<repository-name>:<tag>
    • 範例:docker push my-registry:5000/my-image:latest 將推播名為 "my-image" 的最新版本映象到私有倉庫中。

  7.檢視私有倉庫中的映象:

    • 登入到私有倉庫的管理介面或使用相應的命令,例如 docker search 或者私有倉庫專用的命令,檢視映象是否成功推播到私有倉庫中。

  通過執行以上步驟,您將能夠將原生的 Java 服務和組態檔打包到一個 Docker 映象中。確保 Dockerfile、JAR 包和組態檔在同一目錄下,並根據需要調整 Dockerfile 中的指令和設定,以適應您的專案需求。