做好的 Docker 镜像必须要上传部署到服务器才能发挥它的作用,我们来上传到服务器部署一下。

如果需要 Docker 使用教程,看这里:Docker 开发手册

如果需要在 CentOS 安装 Docker,请看这里:CentOS 生产环境安装 Docker

Docker 镜像导入导出

开始之前我们尝试一下 Docker 镜像的导入导出。

制作镜像

我们省略这一步骤,直接查看一下:

1
2
3
$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
koa-ts              latest              1794b0361317        11 seconds ago      135MB

我们这里有一个 typescript + koa2 的 Node.js 服务程序。

导出镜像

1
2
3
4
$ docker save 1794 >> koa-ts.tar
$ ll
total 327808
-rw-r--r--  1 hanggi  hanggi   145M Aug 28 16:58 koa-ts.tar

可以看出我们导出一个 tar 镜像文件。

导入镜像

把文件上传到服务器(具体怎么做就不解释了,git, ftp, scp… 都可以)

1
2
3
4
$ docker load < koa-ts.tar
$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
<none>              <none>              1794b0361317        10 minutes ago      135MB

成功导入,我们尝试运行一下。

1
2
$ docker run 1794
Listening at prot: 8080

成功了。

修改 tag

导入进来的镜像没有 tag,运行下列代码添加 tag

1
$ docker tag 1794 koa-ts:latest

这样就有标签了。

导出容器

我们也可以把一个容器导出称镜像。

1
2
3
$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                                                NAMES
db2c9ba87e08        koa-ts              "npm start"         11 seconds ago      Up 9 seconds        80/tcp, 443/tcp, 43554/tcp, 0.0.0.0:8080->8080/tcp   thirsty_taussig

正好有一个正在运行的容器,是上一步中使用的镜像生成的。

1
2
3
4
$ docker export db2c > koa-ts.tar
$ ll
total 295936
-rw-r--r--  1 hanggi  hanggi   143M Aug 28 17:08 koa-ts.tar

成功生成了镜像,容器导出的文件比镜像导出的还小一些。

导入容器

我们用 import 导入容器:

1
$ docker import koa-ts.tar

Docker Hub 私有仓库

使用 Docker Hub 私有仓库上传镜像

创建 Docker Hub 账号。

注册地址

具体怎么注册就不解释了,记住用户名、密码、邮箱。

创建仓库

登陆你的 Docker hub 点击 Create Repository

CreateRepository

这里,填写一下仓库名,我们使用 deployment,因为要用作部署。

可见选私有,会发现每个账号只能创建一个私有仓库,如果要增加私有仓库数量需要收费。

上传镜像

上传镜像使用以下命令:

docker tag <existing-image> <hub-user>/<repo-name>[:<tag>]

我们还是接上个例子里的程序:假设我们叫 harry,那么

1
$ docker tag koa-ts harry/deployment:koa-ts

验证登陆

最好使用 Docker 桌面登陆一下,这样就可以直接输入以下代码登陆:

1
2
3
$ docker login
Authenticating with existing credentials...
Login Succeeded

非常方便。

push 镜像到 Docker Hub 仓库

我们使用以下命令:

docker push <hub-user>/<repo-name>:<tag>

1
$ docker push harry/deployment:koa-ts

验证成功 Docker Hub

到网站上刷新查看一下把。