开发者社区> 天行无忌> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

面向WEB开发人员的Docker(八):将 Docker 镜像推送到仓库

简介: Docker Hub 是Docker的Github,是 Docker 官方维护了一个公共仓库。上面包括很多现成的镜像,如 Apache、PHP、Node.js、Python、MySQL 或 MongoDB等,不需要自己的制作镜像。当然你有可以自己制作镜像推送到仓库。
+关注继续查看

Docker Hub 是Docker的Github,是 Docker 官方维护了一个公共仓库。上面包括很多现成的镜像,如 ApachePHPNode.jsPythonMySQLMongoDB等,不需要自己的制作镜像。当然你有可以自己制作镜像推送到仓库。

为什么要把送镜像推送到 Docker Hub?

前面介绍了制作 Dockerfile ,实际上 Dockerfile 是可以随着项目一起存储到项目仓库中,以便在开发期间或作为生产部署过程的一部分构建应用程序。而推送到 Docker Hub 有一下几个好处:

  • 与项目团队一起分发预构建和测试过的镜像变得更容易
  • 镜像可以在生产服务器上拉取,这样部署更加简单和快速
  • 发布的镜像任何人都可以使用,应用程序可以与所有的用户、客户端和其他开发人员共享。

Docker Hub 允许创建任意数量的公共仓库,镜像中的应用程序大部分时候可以是编译后的,不一定是源代码。

类 Docker Hub 产品

除了 Docker Hub ,还有很多提供类似服务的平台,每个平台都有各自的特色:

这里我们推荐使用 Docker Hub,但其他存储库的过程类似。

镜像名称和标签

Docker Hub 为每个镜像分配了一个唯一的名称:

[your_user_name]/[image_name]:[tag_name]

以下部分参考了在上一节中创建的 hellonodejs 镜像,并将该镜像推动到仓库。

最新的默认标签应用于任何新图像。在拉取镜像时未指定标签时下载该版本。

标签是镜像的不同变体,在运行 MySQL 容器时第一次看到这些 - 官方 MySQL 镜像提供了8.0.258.0latest 的各种版本。

每个镜像都有一个默认标签latest,表示最新的版本,在拉取镜像时未指定标签时下载就是该版本。

单个镜像可以应用任意数量的标签,镜像开发人员有责任适当地标记镜像并确保最新的稳定版本使用最新的 ,让标签具有明显的意义。

创建 Docker Hub 仓库

首先需要是在 Docker Hub 上创建一个仓库。登录hub.docker.com/,然后点击Repositories创建Repository(或者直接打开hub.docker.com/repository/…):

image.png

输入完信息后,点击俺就 Create 即可完成创建。

image.png

本地登录

使用 Docker Hub 凭据登录开发PC,使用:

docker login

或者,可以从 Windows 和 macOS 上的 Docker 桌面菜单中选择登录。

如果需要登录到别的镜像仓库(不是 Docker Hub),请使用:

docker login <url>

构建应用程序镜像

现在回到上节创建的项目,从应用程序的 Dockerfile 构建镜像。上一节示例:

docker image build -t hellonodejs .

确定是否构建成功且正确,可以使用一下命令:

docker run -it --rm --name hellonodejs -p 3005:3005 hellonodejs

查看构建的镜像,如下:

docker images

image.png

为镜像打Tag

现在可以使用用户名、仓库名称和标签名称标记镜像,以准备好推送到 Docker Hub,例如:

docker tag nodehello quintiontang/hellonodejs:myfirst

查看:

docker images quintiontang/hellonodejs

image.png

标记版本指向 hellonodejs 原始版本,可以为同一图像创建任意数量的标签,例如:

docker tag hellonodejs quintiontang/hellonodejs:latest

docker image build -t 选项可以指定一个完全限定的名称,因此可以在单个命令中构建和标记镜像:

docker image build -t quintiontang/hellonodejs:myfirst

然而,在标记之前构建和测试是比较安全的——这样可以避免不小心推送一个失败的镜像。

推送到 Docker Hub

使用以下命令将标记的镜像推送到 Docker Hub:

docker push quintiontang/hellonodejs

推送之前需要下登录,docker login

再次单击 Docker Hub 中的仓库链接查看推送的进项,推送的镜像将在以下网址可用:

https://hub.docker.com/repository/docker/[your_user_name]/[image_name]/

本文推送的地址是:

https://hub.docker.com/repository/docker/quintiontang/hellonodejs

image.png

分发镜像

现在可以擦除系统中的所有映像(当然,如果绝对确定的话……) docker system prune -af 然后可以从 Docker Hub 镜像启动容器,例如:

docker run -it --rm --name hellonodejs -p 3005:3005  quintiontang/hellonodejs:myfirst


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
面向WEB开发人员的Docker(六):使用nginx部署静态网站
上一期,介绍了使用docker部署开发wordpress,本期来介绍更加贴近前端开发的Docker使用。现在很多前端项目都使用vue,发布的时候将文件生成到默认的 dist 文件夹,本文将展示vue项目发布部署到Docker容器,文章涉及的命令都是基于配置好了docker环境,如果没有安装部署Docker,可以参阅《面向WEB开发的Docker(三):安装Docker》。
45 0
面向WEB开发人员的Docker(七):使用 Docker 开发Node应用程序
到目前为止,已经使用了预构建的 Docker 镜像,例如MySQL、Vue、Nginx和WordPress。都比较实用,本节来介绍在容器中开发NodeJs应用程序。
29 0
Docker-07-私有仓库搭建
Docker-07-私有仓库搭建
19 0
node项目构建docker镜像
node项目构建docker镜像
962 0
Docker之- 使用Docker 镜像和仓库
Docker之- 使用Docker 镜像和仓库目录 使用Docker 镜像和仓库什么是 Docker 镜像列出 Docker 镜像tag 标签Docker Hub拉取镜像查找镜像构建镜像创建Docker Hub 账号使用 Docker 的commit 命令创建镜像使用 Dockerfile 构建镜...
5570 0
Java Spring Boot 2.0 实战之制作Docker镜像并推送到Docker Hub和阿里云仓库
大规模集群快速部署Java应用,需要制作Docker镜像,本次课程详细介绍如何制作Java程序的Docker镜像文件,深入解析DockerFile核心参数,以及实践演练把我们制作的Docker镜像推送到DockerHub仓库,国内可以使用阿里云Docker仓库加速,以及安全保护机制。
7368 0
搭建个私有docker镜像仓库
公有仓库和私有仓库: 速度:公有仓库走的公网,速度较慢;私有仓库走的是内网,即局域网; 安全性:公有仓库存放在公共硬盘上;私有仓库存在自己服务器硬盘上。 公有仓: 最权威的,但速度比较慢: https://hub.
6755 0
Docker 配置国内镜像仓库
 Docker在默认安装之后,当需要下载镜像时,通过命令docker pull learn/tutoral拉取示例镜像,或者其他镜像时,都是访问默认的docker hub 上的镜像,在国内网络环境下,下载一个镜像基本都在半小时或者更长时间,可以考虑使用Registry Mirror配置国内仓库镜像.     使用由DaoCloud提供的Registry Mirror服务,可以让我们在使用拉取镜像命令不变的情况下,拉取速度成倍提升,该配置过程只需三步。
4820 0
+关注
天行无忌
技术改变生活、研发构建未来、细节铸造品质!
255
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载