
一、简介
由于众所周知的原因,dockerhub官方仓库上传、拉取镜像非常不稳定,甚至出现无法连接的情况。为此,出现了很多免费的加速方案,但总体使用起来都不够稳定,如果需要稳定的开发、部署镜像,还得自建加速网络或者自建镜像仓库,非常麻烦。有没有更加稳定可靠低成本的方案?当然有,那就是抱大腿,使用腾讯云等大厂提供的镜像服务托管自己的镜像。下面就如何使用腾讯云镜像服务,以及如何关联自己的代码仓库,实现自动构建上传,做简单的介绍。
二、开通服务
登录腾讯云并访问页面:https://console.cloud.tencent.com/tcr/repository,点击开通容器镜像服务即可

开通服务后,会跳转到角色授权页面,需要你同意服务授权

角色授权后,进入:https://console.cloud.tencent.com/tcr/?rid=1,初始化镜像仓库的用户名、密码

三、创建镜像
如果还没创建命名空间,需要先创建一个,因为每个镜像需要归属在一个命名空间下

创建镜像仓库,如果是私密镜像,类型必须选择私有,公有就是不需要授权登录就能拉取

创建完之后就能得到镜像地址了

如果不需要自动构建,可以直接手动推送镜像到这个仓库,如下
# 登录腾讯云镜像仓库ccr.ccs.tencentyun.com
docker login ccr.ccs.tencentyun.com -u 设置的用户名 -p 设置的密码
# 给本地镜像创建一个新的标签
#比如把nginx:latest镜像标成我的镜像ccr.ccs.tencentyun.com/dreamplay/php_fpm_base:latest
docker tag nginx:latest ccr.ccs.tencentyun.com/dreamplay/php_fpm_base:latest
# 推送镜像
docker push ccr.ccs.tencentyun.com/dreamplay/php_fpm_base:latest
四、自动构建
如果没开通,同样一路点击开通、开通、开通

开通、授权完之后,就可以设置镜像构建规则了

可连接很多代码仓库,我这里选择授权连接github代码仓库,然后就可以选择指定的代码仓库、代码分支、镜像标签进行构建了

我这里选择的代码开源地址:https://github.com/luler/php_fpm_base
代码里面的构建文件Dockerfile,这里的目的是构建一个php开发环境镜像
# 使用官方 PHP-FPM 镜像作为基础镜像
FROM php:7.3-fpm-alpine
# 安装 Nginx 和 Supervisor
RUN apk add --no-cache autoconf g++ make nginx supervisor
# 安装常用 PHP 扩展 (根据需要添加)
RUN docker-php-ext-install pdo_mysql mysqli opcache
# 通过 PECL 安装
RUN pecl install redis-5.3.7 && docker-php-ext-enable redis
# 使用 Supervisor 启动服务
CMD ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]
如果你不需要修改原镜像,只需要引入到自己的腾讯云镜像仓库,作为基础镜像使用,你的Dockerfile可以修改成你想引入的镜像,如:
# 下面可以修改成任意Dockerhub存在的镜像和标签
FROM nginx:latest
新增构建规则之后,可以手动点击立即构建,也可以等待代码变更触发自动构建

构建成功后,就能看到镜像版本,拉取使用了
五、使用镜像
参考上面我的构建代码里面的docker-compose.yml配置内容示例:
services:
php_nginx:
#主要是这里,指定上面构建出来的镜像
image: ccr.ccs.tencentyun.com/dreamplay/php_fpm_base:latest
#这里省略其他配置...
注意,如果你的镜像类型设置为私有的,需要提前登录腾讯云的镜像仓库:docker login ccr.ccs.tencentyun.com
六、总结
- 使用限制
- 腾讯云提供个人版免费镜像仓库服务存在并发访问限制,限制10客户端同时上传/下载,不过基本可以满足大多数开发需求
- 下载速度
- 国内拉取腾讯云的镜像还是快且稳的,基本能跑满带宽下载,特别是你使用的是腾讯云自家的服务器时,拉取就相当于局域网下载了
- 自动构建
- 腾讯云的镜像服务的自动构建服务接入非常方便,支持多种代码源
- 其他替代
- 除了腾讯云之外,阿里云也同样提供了个人版免费镜像仓库服务,使用方式类似,这里不做赘述