在 Docker 中,您可以通过 Docker Registry
创建本地私有仓库,并将 Docker 镜像推送到这个私有仓库。以下是具体步骤:
步骤 1:启动一个本地 Docker 私有仓库
-
拉取
registry
镜像 :Docker 官方提供了一个
registry
镜像,可以用来运行私有仓库。首先,您需要从 Docker Hub 拉取这个镜像:bashdocker pull registry
-
启动私有仓库容器 :
使用
docker run
启动registry
容器,映射到主机的 5000 端口:bashdocker run -d -p 5000:5000 --name my-private-registry registry
这将启动一个 Docker 容器,在本地的 5000 端口上运行私有仓库。
步骤 2:构建或标记 Docker 镜像
-
构建 Docker 镜像 :
如果您还没有 Docker 镜像,可以通过 Dockerfile 构建镜像:
bashdocker build -t my-app:1.0 .
-
为镜像打标签 :
Docker 需要通过特定的 URL 格式来识别私有仓库,因此您需要为镜像打上私有仓库的标签。格式为:
<registry-ip>:<port>/<image-name>:<tag>
。假设私有仓库在本地运行,标签可以像这样:
bashdocker tag my-app:1.0 localhost:5000/my-app:1.0
步骤 3:推送镜像到私有仓库
-
推送镜像 :
将打过标签的镜像推送到本地私有仓库:
bashdocker push localhost:5000/my-app:1.0
-
查看仓库中的镜像 :
您可以通过以下命令验证仓库中是否有刚推送的镜像:
bashcurl http://localhost:5000/v2/_catalog
这会列出当前私有仓库中所有可用的镜像。
步骤 4:从私有仓库拉取镜像
-
从私有仓库拉取镜像 :
在其他机器或本地的 Docker 环境中,您可以使用以下命令从私有仓库拉取镜像:
bashdocker pull localhost:5000/my-app:1.0
步骤 5:配置仓库的持久化存储(可选)
如果您想让仓库中的镜像持久化存储在磁盘上,可以通过挂载主机目录到容器中实现:
bash
docker run -d -p 5000:5000 --name my-private-registry \
-v /path/to/your/local/storage:/var/lib/registry \
registry
这样,所有推送到私有仓库的镜像将保存在 /path/to/your/local/storage
目录中。
步骤 6:配置 HTTPS(可选)
为了确保私有仓库的安全性,建议配置 HTTPS。简要步骤如下:
-
使用证书管理工具(如
openssl
)生成 SSL 证书。 -
修改
registry
容器启动命令,挂载证书文件并启用 HTTPS:bashdocker run -d -p 5000:5000 --name my-private-registry \ -v /path/to/your/certs:/certs \ -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \ -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \ registry
此时,您可以通过 HTTPS 推送和拉取镜像。
总结
- 启动本地私有仓库
docker run -d -p 5000:5000 --name my-private-registry registry
。 - 为镜像打标签
docker tag my-app:1.0 localhost:5000/my-app:1.0
。 - 将镜像推送到仓库
docker push localhost:5000/my-app:1.0
。 - 从私有仓库拉取镜像
docker pull localhost:5000/my-app:1.0
。
这就完成了创建本地私有 Docker 仓库并推送镜像的流程。