docker 初体验
在参加RoboCup仿真组的时候遇到了一个很奇怪的问题,实验平台运行的环境是java9+,但是智能体代码的运行环境是java8(高版本不可以)。本来打算起一个虚拟机来运行两份不同的代码,不过室友告诉我一个更好的解决方案,使用docker——更轻量高效的解决方案。
什么是docker
摘自docker中文社区:Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal、OpenStack 集群和其他的基础应用平台。
为什么我们使用docker
我们已经有了虚拟机这样的很成熟的解决方案,那么我们为什么需要使用docker 呢?
一开始我将docker理解为一个更轻量级,更优化的虚拟机,但是事实上他们是不同的机制。
看到一个很有趣的形容:
- 物理机:一个独栋别墅,有一个房子,独立地基,独立花园
- 虚拟机:一栋公寓楼,一栋楼里里有很多单独套间,所有套间的住户共享这栋楼,同时不共享水电,也不能进入别人的房子。
- 容器:一栋楼,楼房里有很多套件,每个套间里有小房间,住户只拥有一个小房间,同一套间的多个住户共享套间的所有资源,不能进入别人的小房间。
举个栗子
以我遇到的情况为例:
- 如果我使用虚拟机:
- 创建一个虚拟机,安装ubuntu,在虚拟机中配置JAVA10的环境,运行实验平台
- 创建一个虚拟机,安装ubuntu,在虚拟机中配置JAVA8的环境,运行开发平台
- 如果我使用docker容器:
- 安装ubuntu的镜像
- 创建一个容器,配置JAVA10的环境,运行实验平台
- 创建一个容器,配置JAVA8的环境,运行开发平台
这样说可能还是没有体现 docker 的特点我们来画一个简单的图(为了更形象加上了一个CentOS灵魂画手上线)
超简单使用入门
安装
安装这种小事,自己去官网看咯~
ps:我使用的是deepin15.7系统,安装可以参照debian8~