docker
docker将镜像推送到阿里云容器镜像仓库
首先需要创建个人版实例

远程连接登录实例

进入个人版实例,创建命名空间

创建镜像仓库

给本地镜像打阿里云仓库标签
bash
docker tag [ImageId] crpi-9lqys9g2oakr3f6l.cn-beijing.personal.cr.aliyuncs.com/jiayingchen/test:[镜像版本号]
告诉 Docker 这个镜像要送到哪个阿里云仓库地址、哪个命名空间和镜像仓库、以及镜像版本号。
推送镜像到阿里云仓库
bash
docker push crpi-9lqys9g2oakr3f6l.cn-beijing.personal.cr.aliyuncs.com/jiayingchen/test:[镜像版本号]

进入该镜像仓库,查看该镜像仓库内镜像版本

docker将镜像推送到私有镜像仓库
首先需要配置 Docker 私有仓库:
创建一个用于存储仓库数据的目录,例如 /usr/local/src/docker/docker-registry。
创建一个名为 docker-compose.yml 的文件,并在其中定义 Docker 私有仓库的配置,示例配置如下:
bash
version: '3.8'
services:
registry:
image: registry:2
container_name: docker-registry
restart: always
ports:
- "5000:5000"
volumes:
- ./registry-data:/var/lib/registry
environment:
- TZ=Asia/Shanghai
在 docker-compose.yml 所在目录执行:
bash
# 后台启动
docker compose up -d
# 查看容器状态
docker compose ps

验证仓库是否启动成功
bash
curl http://localhost:5000/v2/_catalog
访问仓库API,返回空列表说明正常

下面需要配置 Docker 允许访问非 HTTPS 私有仓库:
Docker 默认会拒绝和没有 HTTPS 加密证书的私有仓库通信,所以需要在 Docker 的配置文件里添加 insecure-registries 字段,把私有仓库地址加入信任白名单。

重启 Docker 使配置生效
bash
sudo systemctl daemon-reload
bash
sudo systemctl restart docker
为镜像打标签:
需要注意的是 Docker 推送镜像的核心要求是镜像标签包含私有仓库的地址和端口,格式为:[私有仓库地址:端口]/[镜像名]:[版本号]
执行命令:docker tag 原镜像名:版本 私有仓库地址:端口/新镜像名:版本
bash
docker tag mysql:latest localhost:5000/mysql:v1
登录私有镜像仓库
bash
docker login localhost:5000

推送镜像到私有仓库
bash
docker push localhost:5000/myapp:v1
通过仓库 API 查看镜像列表
bash
curl http://localhost:5000/v2/_catalog

镜像已成功上传