一.自我介绍
我就读于计算机科学与技术专业,现在大学三年级,希望自己的项目可以跑在自己的服务器上通过,在登录阿里云准备购买服务器时,了解到“飞天加速计划·高校学生在家实践”活动。
为了让项目部署在容器中,我在阿里云提供的两周免费的ecs容器中安装和学习使用了docker。
二.阿里云ECS使用分享
1.docker出现的背景:
假定您在开发一个项目,您使用的是一台笔记本电脑而且您的开发环境具有特定的配置。其他开发人员身处的环境配置也各有不同。您正在开发的应用依赖于您当前的配置且还要依赖于某些配置文件。此外,您的企业还拥有标准化的测试和生产环境,且具有自身的配置和一系列支持文件。您希望尽可能多在本地模拟这些环境而不产生重新创建服务器环境的开销。请问?您要如何确保应用能够在这些环境中运行和通过质量检测?并且在部署过程中不出现令人头疼的版本、配置问题,也无需重新编写代码和进行故障修复?
答案就是使用容器。Docker之所以发展如此迅速,也是因为它对此给出了一个标准化的解决方案-----系统平滑移植,容器虚拟化技术。
环境配置相当麻烦,换一台机器,就要重来一次,费力费时。很多人想到,能不能从根本上解决问题,软件可以带环境安装?也就是说,安装的时候,把原始环境一模一样地复制过来。开发人员利用 Docker 可以消除协作编码时“在我的机器上可正常工作”的问题。
2.what is docker?
Docker是基于Go语言实现的云开源项目。
Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP(可以是一个WEB应用或数据库应用等等)及其运行环境能够做到“一次镜像,处处运行”。
一句话:解决了运行环境和配置问题的软件容器,方便做持续集成并有助于整体发布的
容器虚拟化技术
3.常用方法
3.1. 使用ssh远程连接ecs服务器
3.2.docker基本命令的掌握
- docker images 查看本地镜像
- docker search 从远程镜像hub中查找需要的镜像
- docker pull 拉取下来到本地 类似于git pull
- docker run
- docker exec 查看容器细节
- docker cp export import成tar包
- 常用命令小结:
3.3.docker镜像发布
- 什么是镜像
是一种轻量级、可执行的独立软件包,它包含运行某个软件所需的所有内容,我们把应用程序和配置依赖打包好形成一个可交付的运行环境(包括代码、运行时需要的库、环境变量和配置文件等),这个打包好的运行环境就是image镜像文件。
只有通过这个镜像文件才能生成Docker容器实例(类似Java中new出来一个对象)。
- UnionFS(联合文件系统)
UnionFS(联合文件系统):Union文件系统(UnionFS)是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem)。Union 文件系统是 Docker 镜像的基础。镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
graphic 特性:一次同时加载多个文件系统,但从外面看起来,只能看到一个文件系统,联合加载会把各层文件系统叠加起来,这样最终的文件系统会包含所有底层的文件和目录
- 为什么要采用分层镜像
镜像分层最大的一个好处就是共享资源,方便复制迁移,就是为了复用。
比如说有多个镜像都从相同的 base 镜像构建而来,那么 Docker Host 只需在磁盘上保存一份 base 镜像;
同时内存中也只需加载一份 base 镜像,就可以为所有容器服务了。而且镜像的每一层都可以被共享。
- docker 镜像commit操作案例
Docker中的镜像分层,支持通过扩展现有镜像,创建新的镜像。类似Java继承于一个Base基础类,自己再按需扩展。
新镜像是从 base 镜像一层一层叠加生成的。每安装一个软件,就在现有镜像的基础上增加一层
- 本地镜像发布到阿里云
- docker容器数据卷
三.收获与总结
通过“高校学生在家实践”,我体验到了云服务器的使用,很棒的体验,不需要拥有自己的硬件设备,就能够操作具有一定资源的服务器,这就是云计算时代下的便利吧
这次使用过程中,我学习到了docker的基本使用,对于远程管理自己的服务器也更进一步,接下来会继续学习docker和微服务的结合使用,希望未来能有机会加入阿里的大家庭(逃)。
四.作品展示
这次使用ecs服务器主要是完成了一个实践课程设计,基于springboot+vue,前后端分离的班级管理系统