如何把本地镜像Image push到Docker Hub

实测下来,跟 github 的原理差不多,少了很多复杂工序,比如init、add、commit等。

首先注册一个 Docker Hub 的用户名和密码。

新建一个 repository,随便命名,选择 public(注:private只允许放一个,多的要钱)

打开terminal:

查看images

docker images
Bash

登录Docker

docker login
Bash

按照要求输入用户名和密码即可

远程关联仓库

 docker tag <本地repository名称>:<本地TAG> <Docker用户名>/<远程repository名称>:<远程TAG>
Bash

注意TAG名称一般是latest之类的,有的人会标注版本号;repository名称即对应Image Name,而不是id

例子:

docker tag terminal-blog-nomodule:latest  commonlearner/terminal-blog:latest
Bash

push仓库

docker push <Docker用户名>/<远程repository名称>:<远程TAG>
Bash

例子:

docker push commonlearner/terminal-blog:latest
Bash

pull仓库

需要在新主机上登录:

docker login
Bash

再pull

docker pull <dockerhub_username>/<repository_name>:<tag>
Bash

例子:

docker pull commonlearner/terminal-blog:latest
Bash

手动迁移

不使用Dockerhub也能实现image的复制:直接手动传输 Docker 镜像的 tar 文件。

手动迁移 Docker 镜像:

1. 在源云主机上:

a. 创建 Docker 镜像

首先,需要将容器提交为一个新的 Docker 镜像。使用 docker commit 命令:

docker commit <container_id_or_name> <new_image_name>:<tag>
Bash

例如:

docker commit my_container my_image:v1
Bash

b. 保存 Docker 镜像为 tar 文件

使用 docker save 命令:

docker save -o <path_to_save_image.tar> <new_image_name>:<tag>
Bash

例如:

docker save -o my_image_v1.tar my_image:v1
Bash

c. 传输 tar 文件到目标云主机

可以使用 scp, rsync 或其他方法将 tar 文件传输到目标主机。

例如使用 scp

scp my_image_v1.tar username@target_host:/path/on/target/host
Bash

2. 在目标云主机上:

a. 加载 Docker 镜像

首先,需要从 tar 文件中加载 Docker 镜像。使用 docker load 命令:

docker load -i <path_to_save_image.tar>
Bash

例如:

docker load -i /path/on/target/host/my_image_v1.tar
Bash

b. 运行容器

现在,你可以使用 docker run 命令从新加载的镜像启动容器。

例如:

docker run -d <other_options> my_image:v1
Bash

注意

  • 在迁移过程中,你迁移的是容器的当前状态。这意味着在容器内进行的任何非持久化更改(例如,容器内部的临时文件)都会被保存并迁移到新的主机。
  • 如果你的应用有持久化存储需求(如数据库数据),还需要额外迁移这些数据。一种方法是使用数据卷或绑定挂载,并单独迁移这些数据。
  • 这种迁移方法更适合临时、测试或开发环境。对于生产环境,推荐使用 Docker Registry 进行镜像的存储和传输,这样可以更容易地管理和分发 Docker 镜像。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注