我们已经了解了Docker是什么和怎么简单的配置Docker,接下来就是个人应用了。
首先,我们在 Docker Hub上新建一个账号,进去后就能看见一句话,Access the world’s largest library of container images:进入世界上最大的容器镜像库
在这里我们可以看到非常多,各种各样的服务器的镜像,包括mongoDB,NGINX,nodejs,redis等等企业级的服务
对我而言最重要的就是nodejs了
image.png

在Docker Hub上创建自己的仓库

1.首先,在创建仓库见需要先创建一个安全连接密钥,进入我的设置my profile -> edit profile 可以看到一个token,点击创建后需要输入一个描述,用来描述这个密钥,创建完成后会提示你如何在docker客户端中登录自己的账号以及生成一个密码:
image.png
上面这个密码是属于熊浩翔的账号rickysakura的,这个密码只会在这个界面显示一次之后都不能修改也不能查看,必须要保存好噢。根据提示在客户端中使用 docker login -u rickysakura 命令,输入后需要你输入密钥password也就是上面生成的那个密码,输入时密码不会显示。
image.png
2.在安全连接创建完之后就可以新建仓库了,点击上方选项栏的 Repositories 进入我的仓库,会发现一开始没有仓库,点击Create Repository创建仓库,输入仓库名称(必须是小写英文字母,可以用特定的特殊符号_.-)
image.png
点击Create就创建成功了

将自己制作的镜像推送到Docker Hub

如果想要把自己做的镜像推送到个人仓库中,可以使用以下命令,其中local-image:tagname是本地镜像名,new-repo:tagname是需要上传的镜像的名字,通过docker tag命令将其复制一份并改名,然后再用push上传。
image.png
如图:提交镜像的步骤分为:
(1)为镜像文件打上tag,不同的tag也就对应了不同的制作版本
(2)用push提交到仓库,必须在镜像名前指定上传的用户米。如果在打包镜像的时候还在镜像名前还加了用户名,且这个名字不是自己登录的用户,则无法正常上传。举个例子:

  1. 源容器 mysql,当前登录用户为ricky
  2. commit命令将其打包为 book/mysql-0.1,注意这里的book指的就是用户名了,可以看到和当前登录用户不一致。
  3. 尝试用push命令提交book/mysql-0.1 ricky用户的仓库底下
  4. 发现报错,请求被拒绝
  5. 这是因为显示的标记了要提交的用户名,而已登录用户又不一致,所以请求被拒绝了
  6. 解决方法:将源镜像重新用tag命令生成一份
  7. docker tag book/mysql-0.1 ricky/mysql-0.1
  8. 此时新的镜像文件ricky/mysql-0.1尝试用push提交
  9. 发现成功提交。

前一节我们知道了镜像名是由仓库名:标签名组成的,所以下图中rickysakura/docker-learn是我的仓库,tagname是我要上传镜像的标签名,二者合一才是完整的镜像名。
image.png

将容器打包成镜像上传

上面的命令是直接将已经做好的镜像上传的命令,但是如果想要将容器打包成镜像还需要一步:
docker commit <exiting-Container> /[:]
翻译一下:docker commit 容器 ID hub用户名/仓库名:标签名
注意这里必须使用容器 ID 来唯一标识当前容器,并且仓库名前一定一定要写自己账号的用户名,如果是别人的账号名就无法上传,除非在本地先登录别人的账号。

commit命令的选项

image.png
-a:描述作者的信息(名字,邮箱等)
-c:添加Dockerfile到新的镜像中,Dockerfile是用于构建镜像的文本文件,包含了所有构建镜像所需的指令和说明。
-m:提交注释,描述这次提交的信息
-p:在提交过程中暂停docker容器的运行,默认使用。

那这样我们就有了一个全新的镜像文件,就可以用提交镜像的命令提交了:
docker tag 源镜像 新镜像
docker push 新镜像 或者 docker push 用户名/新镜像