用于向Docker Hub发布镜像的Docker Push
在创建Docker容器方面,Dockerfiles的使用一直在上升。Dockerfiles上未被提及的一点是它在创建Docker镜像方面的微不足道的优势,用户可以将其推送到Docker Hub的在线存储库。
这使得在各种公共和私人存储库以及注册中心之间共享Docker镜像变得很容易。这使用户在创建早期版本的Docker镜像时有更大的灵活性。
在这篇文章中,我们将讨论如何创建一个Docker文件,并在Docker Hub中创建一个账户,从那里我们将创建一个存储库。我们还将介绍如何将Docker镜像推送到注册中心。
这篇文章对已经有Docker知识的人和有容器技术基础的读者会有帮助。
先决条件
为了开始工作,我们必须在我们的系统上安装Docker。
请注意,我们将在本教程中使用
Ubuntu 20.04。
创建一个Docker文件
在我们发布Docker镜像之前,应该先建立一个镜像。首先,让我们了解一下Dockerfile的含义。
Dockerfile是一个包含特定命令的内容文件,用于生成Docker镜像。让我们继续并创建一个。在你的终端中,创建一个目录,并移动到用下面的命令创建的目录中。
mkdir TestDocker
cd TestDocker
用下面的命令创建一个名为Dockerfile 的文件。
touch Dockerfile
由于我们创建的文件是空的,通过你选择的文本编辑器打开它,并更新文件,如下所示。
FROM linux
MAINTAINER testUser
RUN apt-get update
CMD ["echo", "Welcome to Dockerfile"]
- FROM- 指定创建图像的道具。它可以从基本镜像或根镜像开始。
- MAINTAINER- 定义了该特定镜像的作者。它可以采取名字、姓氏或电子邮件。
- LABEL属性可以用来强调关于图像的更多信息。它的使用是可选的,取决于它在创建你的Dockerfile时的适用程度。
- RUN- 它是一个命令,在构建镜像时携带执行Dockerfile的一组指令。
- CMD- 该命令为正在执行的Dockerfile提供了一个还原。
要检查Dockerfile 的内容,你可以在终端使用cat 命令。
oruko@oruko-ThinkPad-T520:~/Documents/TestDocker$ cat Dockerfile
FROM ubuntu
MAINTAINER testUser
RUN apt-get update
CMD ["echo", "Welcome to Dockerfile"]
在Docker Hub上创建一个存储库
现在我们已经创建了我们的Dockerfile,让我们在把它推送到在线仓库之前在Docker内部创建一个仓库。如果你对Github的工作方式很熟悉,那么Docker Hub和它没有什么不同。
因此,请到Docker Hub去注册一个账户。注册后,点击导航栏中的Repositories 标签,你会看到一个类似下图的表格。

创建一个名为docker-push 的仓库,因为这是我们将在文章中使用的例子。现在我们的仓库已经设置好了,让我们从Docker创建一个镜像,并把它推送到我们之前创建的仓库。
使用Docker Hub建立Docker镜像
要在Docker中建立一个镜像,可以使用下面的命令。
docker build -t username/repository_name .
-t 标志有助于在处理各种镜像时,识别它们属于哪个名称。username 是你的Docker hub名称,本例中的repository_name 是docker-push ;我们之前创建的存储库。我们在Dockerfile的文件夹中添加一个句号。
有了这个后知后觉,让我们继续,构建我们的Docker镜像。执行下面的命令,把用户名改为你在Docker hub中的用户名,把仓库改为docker-push 。
docker build -t bullet08/docker-push .
在为组织构建Docker镜像时也使用同样的方法。你所需要做的就是用组织的账户名和组织的Docker hub仓库来改变用户名。
推送Docker镜像
在我们推送Docker镜像之前,我们需要登录Docker hub。我们可以使用命令行毫不费力地做到这一点。
docker login
一旦验证通过,我们就可以把我们的容器推送到Docker hub。为了把我们的容器推送到Docker hub,我们使用下面的命令。
docker push bullet08/docker-push
完成这些后,我们的Docker镜像现在就可以在Docker Hub中使用了。你可以通过访问你的存储库看到它。
将Docker镜像推送到非Docker Hub的注册中心
Docker注册表是Docker镜像的记忆板,它使Docker用户能够将构建的镜像拉到他们的本地机器上,并将新镜像推送到注册表。
到目前为止,我们已经介绍了如何使用我们的用户名构建一个Docker镜像。由于这对使用Docker Hub注册表服务的个人来说很重要,在推送到非Docker-Hub注册表时,程序会有一些变化。
在为非Docker-Hub-Registry构建时,我们将我们的注册表附加到我们的用户名上。下面的例子显示了一个为注册表构建镜像的例子,地址是registry.test.com 。
docker build -t registry.test.com/bullet08/docker-push .
在推送镜像之前,我们在登录我们的Docker Hub时使用同样的命令。
docker login registry-test.com
为了将我们构建的镜像推送到Docker仓库,我们使用之前使用的命令,但现在我们把它改为我们的注册表。
docker push registry.test.com/bullet08/docker-push
我们不仅成功地推送了我们先前创建的Docker镜像,而且还推送了其他注册表。
总结
在这篇文章中,我们了解了Docker Hub,为我们的用户名和组织构建了Docker镜像。然后我们将这些Docker镜像推送到我们的Docker Hub仓库和非Docker Hub。