我们已经在本地建立了一个镜像,并且这个镜像已经通过了我们的测试,现在我们就可以将它发布到我们的服务器上,而要发布到服务器上创建容器就需要一个存储这些镜像的地方。
而 Docker 公司就提供了一个存放公共镜像存储的地方就是 DockerHub。当然你如果要存放私有的镜像,则需要私有仓库,DockerHub 默认提供了一个私有仓库,你如果需要更多的私有仓库则需要付费。
注意,请自行前往
https://hub.docker.com/
注册自己的账户。
完成注册后你会得到一个唯一的用户名称,如ltm0203
,参考下图:
10
在本文中我会打上一个ltm0203/exampleApp3000
的镜像标记,将它发布到 Docker Hub 中。你可以自由选择你是发布为私有仓库还是公有仓库。
为了对比方便,我们再制作一个未修改的镜像一共发布到 Docker 仓库中,请注入以下命令:
docker tag yoyomooc/exampleapp:latest ltm0203/exampleapp:unchange
可以通过docker image ls
,验证生成的镜像,我只选择了需要发布的镜像,你的显示出的镜像会比这个多一些。
REPOSITORY | TAG | IMAGE ID | CREATED | SIZE |
---|---|---|---|---|
ltm0203/exampleapp | changed | 172ebd0eedc7 | 6 hours ago | 285MB |
ltm0203/exampleapp | unchange | a49000cfa42e | 23 hours ago | 234MB |
现在打开终端控制台,注入以下命令:
docker login -u <用户名> -p <密码>
我们需要在控制台中登录你 DockerHub 的用户名和密码,所以请将<>中的字符替换为你自己注册的用户名和密码。
登录成功后会返回,登录成功的英文内容。
10
现在我们就可以通过命令推送到 DockerHub 仓库中,输入以下命令:
docker push ltm0203/exampleapp:changed
docker push ltm0203/exampleapp:unchange
推送成功后,返回如上图 的结果。
同时我们可以看到在推送ltm0203/exampleapp:unchange
镜像的时候,返回的文字中除了有 Pushed 以外还有 Layer already exists
,提示已经存在,这说明 docker 会检查当前仓库中是否有相同的内容,如果有的话会引用它们。
The push refers to repository [docker.io/ltm0203/exampleapp]
b719af2a02d9: Layer already xists 4de7fcec79e4: Layer already exists b4f12c28bcb9: Layer already exists 4be6dadfbd3f: Layer already exists b50dd2025901: Layer already exists c3a984abe8a8: Layer already exists unchange: digest: sha256:c995199b726c31b1eed0966fee9953b8c7f64d37a834935ee7a401b14062ba19 size: 1586
你可以登录https://hub.docker.com/repository/docker/ltm0203/exampleapp
地址进行验证,得到如下的结果,镜像已经成功推送。
10
在之前的章节中,我们提到过使用docker pull
命令的时候,会默认去拉取latest
的内容,而当前我们的仓库中不存在latest
标记,所以当我们去使用如下命令:
docker pull ltm0203/exampleapp
则会返回以下消息:
Using default tag: latest
Error response from daemon: manifest for ltm0203/exampleapp:latest not found: manifest unknown: manifest unknown
并不存在latest
标记的ltm0203/exampleapp
镜像,所以为了避免这种尴尬,我们需要推送一个ltm0203/exampleapp:latest
标记的镜像到 DockerHub 中。
请输入以下命令:
docker tag yoyomooc/exampleapp:latest ltm0203/exampleapp:latest
docker push ltm0203/exampleapp:latest
当我们使用完成后登陆 docker 的用户会常驻在我们的系统中,所以我们需要使用
docker logout
注销我们当前的登陆信息。
以上便是 docker 的基础操作流程了。如果你对这些命令还不熟悉,还请多加练习。掌握他们。
[1]
复制文件到正在运行的Docker容器中: https://www.bilibili.com/video/BV1P5411s7GA/
[2]
Youtube: https://youtu.be/z9GajqkL-_0
[3]
将正在运行的容器保存为本地Docker镜像: https://www.bilibili.com/video/BV1Eg4y1B7md/
[4]
Youtube: https://youtu.be/sl0hJl7IKyI