前言
在 git 中,使用 git commit -m "add new file" 会将当前的修改提交到了本地库,如果要推到远程库,则需要 git push。
Docker 也是同样有远程库的概念,,你执行 docker commit -m "add a vim" -a "frank-lee" debian_1 frank-lee/debian_1:1.0.0 之后,接下来则需要将你的修改推到远程库,相关的命令为 docker login、docker tag 以及 docker push。
在 Docker 中,可以将你做了修改的定制镜像推送到云计算厂商的容器镜像服务中,阿里云中称为 ACR(Alibaba Cloud Container Registry,阿里云容器镜像服务);腾讯云中被称为 TCR(Tencent Container Registry,腾讯云容器镜像服务)。其他的厂商可能在名称上会稍有不同。
ACR 和 TCR
使用的步骤都是一样的:
- 首先开通或购买容器镜像服务这个产品(可选择个人版或企业版)
- 创建命名空间
- 在对应的命名空间下创建镜像仓库
- 定义镜像仓库信息
- 完成后,按照提示完成即可。首先
docker login,然后docker tag和docker push
可通过云计算厂商的文档找到更加详细的操作步骤。以 TCR 个人版为例:
步骤1:注册腾讯云账号
注册腾讯云账号,并完成实名认证。如果您已在腾讯云注册,可忽略此步骤。
步骤2:开通容器镜像服务
在 "腾讯云控制台" 中,选择 云产品 > 容器镜像服务,进入容器镜像服务控制台,按照界面提示开通容器镜像服务并为服务授权(如果您已为容器镜像服务授权,请跳过该步骤)。
步骤3:初始化个人版服务
-
登录 "容器镜像服务控制台",进入 实例管理 页面。
-
选择所需使用的地域,当前个人版服务在中国大陆仅在广州部署并提供服务,支持北京,上海,成都等地域跨地域内网访问,其他支持地域请参见 "购买指南",实际可使用地域请以控制台地域列表为准。本文以该地域的个人版实例为例。
-
查看该地域内的个人版实例卡片,并单击初始化密码,设置访问个人版服务的固定密码。后续如忘记该密码,可在 更多 > 重置登录密码 中重置密码。
-
完成登录密码初始化后,即可单击登录实例,获得个人版实例的登录指引。
docker login ccr.ccs.tencentyun.com --username=xxxxxxxxx其中 username 是当前登录的腾讯云账号 ID。若输出显示 Login Succeeded 即表示登录成功。注意!这一步会要求你输入单独的 Docker 访问密码。
步骤4:创建命名空间
-
选择左侧导航栏中的 命名空间,进入命名空间列表页面,选择 个人版实例,单击 新建。命名空间用于管理实例内的镜像仓库,不直接存储容器镜像,可映射为企业内团队、项目或是其他自定义层级。
-
在弹出的 新建个人版命名空间 窗口中输入名称
名称:建议使用企业内团队或项目进行命名,个人版实例为共享实例,命名空间名称全局不可重复,即无法新建其他用户已经占用的命名空间名称。
步骤5:创建镜像仓库(可选)
- 单击左侧导航栏中的 镜像仓库,进入 镜像仓库 列表页面,在顶部选择 个人版实例。
-
单击 新建,并在弹出的 新建镜像仓库 窗口中,配置镜像仓库信息并单击 确认。
名称:仅支持英文字符,最长为200个字符,只能包含小写字母、数字及分隔符("."、"_"、"-"),且不能以分隔符开头或结尾,不支持多级路径。
类型:公有/私有,与 DockerHub 中概念一致,即公有镜像对外全部可见,可匿名拉取;私有镜像仅有权限的用户可见,必须要登录后可拉取。
命名空间:可选择已创建的命名空间。
描述:支持 markdown 语法。
步骤6:推送拉取镜像
通过以上步骤,您已经创建了命名空间及镜像仓库,接下来可通过以下步骤实现向镜像仓库内推送及拉取镜像。
-
推送镜像
您可在本地构建新的容器镜像或从 DockerHub 上获取一个公开镜像用于测试。
本文以 DockerHub 官方的 Nginx 最新镜像为例,在命令行工具中依次执行以下指令,即可推送该镜像。请将 project-a 及 nginx 依次替换为您实际创建的命名空间名称及镜像仓库名。
sudo docker tag nginx:latest ccr.ccs.tencentyun.com/project-a/nginx:latest sudo docker push ccr.ccs.tencentyun.com/project-a/nginx:latest -
拉取镜像
本文以已成功推送的 Nginx 镜像为例,在命令行中执行以下命令,即可拉取该镜像。
sudo docker pull ccr.ccs.tencentyun.com/project-a/nginx:latest










