使用华为云docker镜像服务器制作Docker镜像,核心是通过华为云容器镜像服务SWR实现镜像的构建、托管与分发,整个流程包括编写Dockerfile、构建镜像、登录SWR、推送镜像及在云服务器上拉取运行。
为什么选择华为云docker镜像服务器
容器镜像管理是云原生基础设施的关键一环,行业共识认为,华为云SWR在稳定性与国内加速方面具备天然优势,相比自建Registry,SWR免去了运维负担,支持镜像安全扫描、权限精细控制,并与华为云CI/CD工具链无缝集成,你无需操心存储扩容或网络瓶颈,只要专注业务代码,尤其对于国内用户,华为云在全国多地域部署了镜像缓存节点,拉取速度明显优于海外公有registry,如果你正在为选哪家镜像仓库犹豫,不妨从华为云SWR入手,它免费额度足以覆盖中小团队日常需求。
SWR相比自建Registry的优势
免运维:存储、带宽、高可用由华为云负责,你只需使用API或控制台管理。
安全集成:支持镜像漏洞扫描,官方维护基础镜像安全基线。
高速分发:同地域内网拉取,延迟极低,配合华为云ECS使用效果更佳。
权限细粒度:可设置组织级、镜像级访问控制,适合团队协作。
适合什么场景
个人开发者快速部署个人项目,利用免费额度。
团队内部DevOps流水线,自动构建并推送。
生产环境中的微服务集群,需要稳定、低延迟的镜像分发。
华为云docker镜像仓库怎么用:准备工作
在开始制作镜像之前,你需要先完成环境配置和华为云侧的准备,这部分不复杂,但遗漏任何一步都会导致后续推送失败。
安装Docker环境
无论你使用本地机器还是华为云ECS,Docker是必须的,安装命令取决于操作系统:
- Ubuntu/Debian:
sudo apt-get install docker.io,然后启动服务sudo systemctl start docker。 - CentOS/RHEL:
sudo yum install docker-ce,安装后启动并设置开机自启。 - Windows/Mac:直接安装Docker Desktop。
安装完成后,运行docker version确认客户端和服务端都正常,如果你在华为云ECS上操作,建议使用Ubuntu 20.04或更高版本,Docker支持更完善。
开通华为云容器镜像服务SWR
登录华为云控制台,在服务列表中找到“容器镜像服务SWR”,首次使用需要开通,根据引导完成授权即可,这个过程只需几分钟,不会产生费用(免费额度覆盖初期使用)。
创建组织(Organization)
SWR中镜像以“组织/镜像名:标签”的形式存储,组织相当于命名空间,用于隔离不同项目或团队,你可以在控制台左侧“组织管理”中创建一个组织,my-project`,记住这个组织名,后续推送时要用。
获取访问凭证
推送镜像需要身份认证,华为云采用临时登录指令,有效期24小时,你可以在控制台SWR概览页点击“登录指令”,并复制生成的`docker login`命令,也可通过CLI方式获取,但最直接的是在控制台操作。
华为云制作Docker镜像的详细步骤
现在进入核心环节:构建一个可运行的Docker镜像,并打上标签。
编写Dockerfile
假设你有一个简单的Python Flask应用,目录结构如下:
app/
├── app.py
└── requirements.txt
app.py内容(示例):
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return "Hello, Huawei Cloud SWR!"
if __name__ == '__main__':
app.run(host='0.0.0.0', port=8080)
requirements.txt:
flask
在同目录下创建Dockerfile:
FROM python:3.9-slim WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY app.py . EXPOSE 8080 CMD ["python", "app.py"]
这个Dockerfile很基础,适合入门,生产环境建议使用更精简的基础镜像,并加入健康检查等指令。
构建镜像
在`app`目录下执行:
“`bash
docker build -t my-flask-app:latest .
“`
`-t`指定镜像名称和标签,这里用`my-flask-app:latest`,构建完成后,运行`docker images`确认镜像已生成。
镜像打标签(Tag)
推送前需要将镜像重命名为SWR仓库地址格式:`swr.{地域}.myhuaweicloud.com/{组织名}/{镜像名}:{标签}`。
你选择的地域是cn-north-4(北京四),组织名my-project,那么命令为:
docker tag my-flask-app:latest swr.cn-north-4.myhuaweicloud.com/my-project/my-flask-app:latest
标签可以自定义,但建议使用语义化版本,如v1.0.0。
推送镜像到华为云镜像仓库
镜像打好标签后,推送到SWR仓库。
登录SWR
使用之前从控制台复制的`docker login`命令。
“`bash
docker login swr.cn-north-4.myhuaweicloud.com -u cn-north-4@xxx -p xxxxxx
“`
登录成功后会提示`Login Succeeded`,注意登录指令有效期24小时,过期后需重新获取。
执行推送
“`bash
docker push swr.cn-north-4.myhuaweicloud.com/my-project/my-flask-app:latest
“`
推送过程会显示分层上传进度,如果网络稳定,几秒到几分钟即可完成,推送完成后,在控制台“镜像管理”中可以看到该镜像。
常见推送失败原因及解决
认证过期:重新获取登录指令并登录。
组织不存在:在控制台创建组织,或检查组织名是否拼写正确。
镜像标签格式错误:确保仓库地址前缀正确,包括地域、组织名。
网络超时:建议使用华为云ECS进行推送,走内网更快。
在华为云服务器上拉取镜像并运行容器
镜像推送到SWR后,你就可以在任何一台有Docker环境的机器上拉取运行,如果使用华为云ECS,同地域内网拉取速度极快。
登录目标ECS,安装Docker(参考前文),然后执行:
docker login swr.cn-north-4.myhuaweicloud.com -u cn-north-4@xxx -p xxx docker pull swr.cn-north-4.myhuaweicloud.com/my-project/my-flask-app:latest docker run -d -p 8080:8080 swr.cn-north-4.myhuaweicloud.com/my-project/my-flask-app:latest
访问https://<ECS公网IP>:8080,即可看到应用响应,整个过程无需手动搬运镜像,十分便捷。
华为云镜像仓库价格与地域选择
了解费用和地域差异,有助于做出更合理的决策。
费用构成
华为云SWR提供免费额度,包括一定量的存储空间和公网流量,超出部分按实际使用计费,具体如下(根据华为云官网公开信息,金额随政策调整,以下为模糊描述):
- 存储费用:按镜像占用存储空间计费,免费额度之外每GB单价较低(约每月几毛钱)。
- 流量费用:公网下行流量按GB计费,同地域内网访问免流量。
- 请求次数:API调用次数在免费额度内免费,超出后按万次计费。
对于个人开发者或小型团队,免费额度通常足够使用数月,如果你对价格敏感,可以关注华为云定期推出的资源包,进一步降低成本。
如何选择地域
地域选择直接影响镜像拉取速度,基本原则:
你的ECS或K8s集群部署在哪个地域,SWR就选择同地域,这样内网传输免流量且极快。
如果团队分布在不同地域,建议在主要数据中心所在地域创建仓库,其他地域通过SWR的跨区域复制功能同步镜像。
国内用户常用地域:北京四(华北)、上海一(华东)、广州(华南)等,海外用户可选择新加坡、曼谷等。
据华为云官网文档,每个地域的镜像仓库域名格式为swr.{region}.myhuaweicloud.com,你可以在控制台快速获取。
华为云docker镜像服务器常见问题解答
Q:华为云docker镜像仓库怎么用?我完全新手,该从哪开始?
A:先注册华为云账号,开通SWR服务,然后在本地或ECS上安装Docker,在控制台创建一个组织,获取登录指令,最后用`docker build`构建镜像,`docker tag`打标签,`docker push`推送,整个过程可参考本文“准备工作”“制作Docker镜像”“推送镜像”三节,SWR控制台有交互式引导,跟着操作即可。
Q:推送镜像时提示“denied: unauthorized”,怎么解决?
A:这通常是因为登录指令过期或认证信息错误,重新在SWR控制台获取新的登录指令,并执行`docker login`,注意,登录指令中的用户名和密码是临时生成的,请勿手动修改,如果使用长期有效的AK/SK方式,请确保配置正确,检查组织名称是否与登录时使用的租户名匹配。
Q:华为云镜像仓库价格如何?免费额度够用吗?
A:华为云SWR提供一定量的免费存储和公网流量,对于个人开发者或日均构建次数不多的项目,免费额度基本够用,超出部分按存储容量和流量计费,价格较低,具体免费额度数值,请以华为云官网最新公告为准,建议在控制台“资源包”页面查看当前优惠,或购买存储包进一步降低成本。
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/536355.html