前面学习了 docker 的命令和实际的用法,现在来实战一下。编排一个服务,也就是项目部署。

目前我们在一个闭源环境下工作,介绍一些工作流程和部署项目的方法。

该工作流程比较特殊

所谓闭源环境就是

  • 没有网络,客户机没有链接外网。
  • 不能使用U盘连接客户机,因为那是涉密机器。
  • 我们自己的电脑没有限制,可以连接外网,我们连接的自己的热点。

于是,我们所做的修改需要做成镜像、刻成光盘,然后拷贝到客户机,上传到服务器,然后部署,部署完成后,最后测试修改内容是否符合预期。

项目部署

本机操作

1. 发布镜像

  • 代码编写完成,先 npm run build 编译成功,确保代码能通过编译检测
  • 保证登录了 docker,然后运行 sh 脚本,一般位于 docker 目录下,进而发布镜像
  • 如果 sh 脚本中没有 docker push 命令,则需要另外运行该命令,将其发布到 docker hub

2. 导出镜像

  • 如果是导出别人的镜像,则需要先拉取镜像 docker pull imageName
  • 导出镜像 docker save url/<imageName>:<tagName> > <imageName>:<tagName>

这样就在当前目录导出了该镜像

3. 刻盘

将上面的镜像文件拷贝到光盘中,刻录,等待刻录完成。

客户电脑操作

4. 将镜像上传到服务器

  1. 在客户机上新建目录存放光盘中的镜像文件,新建的文件夹最好包含日期和项目名,如 20191105_biaozu,这么做的目的是备份镜像文件。同时也为下一步将文件拷贝到服务器作准备。
  2. 将 20191105_biaozu 中的镜像文件拷贝到服务器目录 /../images/<projectName>

将光盘中的文件拷贝到客户硬盘,然后再将客户硬盘里的文件拷贝到服务器所花费的时间要少于单独从光盘拷贝文件到服务器。

服务器操作

5. 导入镜像

  1. 进入到拷贝镜像的服务器目录,为了好说明,称为镜像目录。实际上镜像可以放到任何地方,只要在保证在服务器上了,就能保证是正确的。如: data/datagrand/images/bizozu_images
  2. 命令 ll 查看该目录下是否有刚导入的镜像文件,同时确认镜像名 <imageName>和标签 <tagName>
  3. 将拷贝到服务器的镜像导入,在包含镜像的目录下执行命令 docker load -i <imageName>:<tagName>,这个命令是 save 反向操作。在本地将我们本地仓库里面的镜像保存(导出)到我们指定的目录。在服务器上,将镜像导入到指定的目录。

导入镜像后可以通过命令docker images|grep <imageName>查看指定镜像的信息,确保镜像已经导入成功

6. 更改镜像名

  1. 进入到部署目录,如:data/datagrand/images/bizozu_deploy
  2. 更改 docker-compose.yml,将里面的 image 属性(所有有改动的镜像)改成导入的镜像名。

7. 删除容器、镜像

使用命令 docker-compose down 删除容器/镜像

8. 启动容器、镜像

使用命令 docker-compose up 启动容器/镜像

删除容器然后启动容器可以使用 docker-compose restart 重启,一步完成,但是该命令不会对修改的 docker-compose.yml 文件生效。

docker-compose down 与 docker-compose up 能够重启镜像,并对修改的 docker-compose.yml 生效。

可用命令
docker images|grep <imageName> 查看指定容器的信息
ll 列出所有的文件和目录,包含文件最后修改时间、文件大小等信息,并且每个每一项换行显示

最新文章

  1. 数据结构--用Objective-C简单实现的数据结构:栈
  2. 转:从编译链接过程解析static函数的用法
  3. 解决IE apk变成zip:Android 手机应用程序文件下载服务器Nginx+Tomcat配置解决方法
  4. electron小例子
  5. Sliverlight中PagedCollectionView的使用
  6. java 动态代理范例 InvocationHandler与Proxy
  7. Code First研究学习2_基本的错误及解决方法
  8. 64位CentOS6.2安装erlang及rabbitmqServer
  9. 分享Mvc3+NInject+EF+LigerUI权限系统
  10. DotNet友元程序集解析
  11. OpenCV——老照片效果
  12. HangFire快速入门 分布式后端作业调度框架服务
  13. 单源最短路径Dijkstra和优先级算法
  14. 【c# 数据库】 多表链接
  15. linux c调用 mysql代码
  16. 学习笔记47—PhotoShop技巧
  17. jqgrid 启用键盘操作bindKeys
  18. Unity IOC容器通过配置实现类型映射的几种基本使用方法
  19. elk单台环境搭建
  20. cakephp引入其他控制器封装方法

热门文章

  1. 使用cookie登录网盘账号
  2. js中call,apply,bind方法的用法
  3. Reactive Extensions (Rx) 入门(5) —— Rx的事件编程
  4. 给codeblocks的c编译选项添加c99标准
  5. go语言Mac下编译安装语言包
  6. 微服务看门神-Zuul
  7. Git 自救指南:这些坑你都跳得出吗?
  8. css选择指定元素
  9. test软件工程第三次作业
  10. Dubbo自定义Filter统一处理异常