Docker:将数据容器推送到Docker Hub

3
我对Docker以及Docker Hub非常陌生,希望您能耐心指导...
我创建了一个数据容器来配合我的Docker镜像(具体来说,是用于存储正在运行的mssql-server-lnux镜像的数据容器),我知道它在我的本地系统上的位置。
我在Docker Hub上新建了一个账户,我认为我想将数据容器推送到hub上。我说“我认为”,因为我不确定这是否是正确的方法:我希望能够从不同的机器上使用数据容器。
如果我到目前为止所说的是正确的方向,那么我该如何将Docker镜像推送到Hub上,并且之后如何访问它?
3个回答

2

您无法推送容器,只能推送镜像,这种区别很重要。

镜像类似于您的容器的,容器本质上是镜像的实例

因此,如果您想共享您的数据库,则这不是一个好主意 - 您需要先docker commit,这会变得非常混乱。

但是,如果您只想在不同机器上启动具有新数据容器(最初没有数据)的mysql实例,那么可以推送数据容器镜像。

希望这可以帮助您。


我认为这确实有帮助,但您能否再澄清一点。如果容器的物理位置(当前在我的 Mac 上的 /var/lib/docker/volumes/…/_data)被迁移到云卷上,我是否可以在其他机器上创建一个具有相同源的新容器?这样就完全不需要涉及 Docker Hub 了吗? - Manngo
嗯,我认为您不能在多个Docker守护程序之间共享位于/var/lib/docker/...下的数据。唯一将实际数据从数据容器共享出去的方法是使用-v将其挂载到某个云卷上。 - user3012759

0

好的,以下是几个步骤。请检查是否有帮助。

  1. 首先给你的镜像打标签。假设你的镜像名称为“myapplication”,你的Docker Hub用户名为“dockerhubusername”。

    $ docker tag myapplication dockerhubusername/myapplication

  2. 使用以下命令登录到Docker Hub。输入用户名“dockerhubusername”,然后输入Docker Hub账户的密码。

    $ docker login

  3. 现在执行推送命令。

    $ docker push dockerhubusername/myapplication

现在,登录到你的Docker Hub并检查是否有镜像。请记住,镜像被推送到类似Docker Hub这样的注册表/仓库中,而不是容器中。


这会推送应用程序镜像,但数据卷会发生什么? - Piranna
数据量始终在主机上。如果需要,您可以备份文件。 - ProgrammerBoy

-1

假设您已经标记了您的镜像,

使用docker login配置您的docker hub凭据,并使用docker push将您的镜像推送到dockerhub。

$ docker login

$ docker push dockerhub_username/mssql-server-lnux

如果您还没有标记该镜像,

$ docker tag mssql-server-lnux dockerhub_username/mssql-server-lnux

要稍后访问您的镜像,

$ docker pull dockerhub_username/mssql-server-lnux

参考资料

  1. Docker Pull
  2. Docker Login

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接