一分钟带你理解docker,并教你在自己电脑上安装docker环境。
为什么要安装docker?
首先我们需要明白一点:我们为什么要安装docker,我这里给同学们举个例子:如说,你们公司开发了很多项目。去年开发的Java项目用的是JDK1.8和Maria DB数据库,已经部署在Linux上面了。今年开发的项目用的是JDK15和MySQL数据库,现在要把这个项目也部署在同一个Linux系统之上,那就非常困难。因为MySQL和MariaDB的程序包有冲突,在同一个Linux系统中只能安装其中一个数据库,要么是MySQL要么是MariaDB。还有JDK1.8和JDK15,你怎么给系统设置两个Java环境变量?所以我们就需要引入Docker环境。
Docker原理
往简单了说,Docker是个沙箱环境。你可以创建很多个沙箱空间,然后在每个沙箱中部署不同的程序。比如沙箱A里面部署MySQL,沙箱B中部署MariaD8。沙箱之间是物理隔绝的,只有网络可以联通,所以MariaDB和MySQL程序包的冲突,在Docker中完全体现不出来。
因为Docker环境给每个沙箱都创建了虚拟网卡,所以每个沙箱都有自己的内网IP地址,沙箱之间可以通过网络相互调用,这就能搭建数据库集群或者部署项目了。沙箱的内网IP在Docker环境之外是无法访问的,所以等我们创建沙箱的时候,需要把沙箱的某个端口映射到Linux系统的某个端口,这样在Docker之外才能用网络访问Docker容器里面的程序。
镜像和容器
Docker为了最大化的共享资源,减少资源浪费,创造出了镜像技术。镜像是沙箱之间相同的部分,差异化的部分叫做容器。比如说一个Java镜像,里面安装了JDK1.8,然后我为这个镜像创建出2个容器,这两个容器共享使用JDK镜像中的Java环境,并且我可以在每个容器中部署不同的Java程序。如果Docker没有镜像技术,我们只能分别在两个容器中安装JDK环境,这就造成了不必要的重复浪费。
创建Docker镜像的方式有多种,比如说你把要安装的程序和脚本写成Dockerfile文件,然后执行特殊的命令Docker就会按照你的要求创建出镜像。或者说你利用现有的容器,在里面安装程序写好脚本,然后把这个容器逆向创建出镜像也可以。甚至说你不想自己创建镜像,也可以去DockerHub网站上下载别人创建的镜像。比如MySQL镜像、HBase镜像、JDK镜像、Python镜像等等。你把镜像下载下来,导入Docker环境,然后创建容器就可以使用MySQL、HBase这些东西了,特别节省时间。
程序运行在容器中,性能有没有损失?
Docker创建的沙箱是轻量级的,只给容器创建了虚拟网卡,所以对Linux系统开销非常小。在容器中运行程序跟在Linux同直接运行程序没有差别,性能也没有任何损失,所以你可以放心使用Docker环境。现实中,一台硬件服务器同时运行几百个容器也没有问题。即便2GB内存的低端云主机,运行十几个容器也能撑得下来。
为什么要使用虚拟机?
虽然Windows和Mac0S系统都可以直接安装Docker,但是这种Docker是割版的,并不能发挥出Docker全部功能。例如不支持虚拟IP,HBase也存在运行问题,所以强烈建议大家在虚拟机上安装Docker.
这里我建议大家安装VirtualBox虚拟机,免费使用,而且BUG很少,不像VMware虚拟机到处都是BUG,例如SSH连接上传文件会出现断连和丢包等等。大家可以到VirtualBox官网(www.virtualbox.org/wiki/Downlo...%25E4%25B8%258B%25E8%25BD%25BD%25E8%25BF%2599%25E4%25B8%25AA%25E8%2599%259A%25E6%258B%259F%25E6%259C%25BA%25E7%259A%2584%25E5%25AE%2589%25E8%25A3%2585%25E6%2596%2587%25E4%25BB%25B6%25E3%2580%2582 "https://www.virtualbox.org/wiki/Downloads)%E4%B8%8B%E8%BD%BD%E8%BF%99%E4%B8%AA%E8%99%9A%E6%8B%9F%E6%9C%BA%E7%9A%84%E5%AE%89%E8%A3%85%E6%96%87%E4%BB%B6%E3%80%82")
利用虚拟机安装Linux系统
VirualBox虚拟机安装比较简单,基本上就是选择默认选项就可以了。Windows系统安装VirtualBox的过程中会弹出安装虚拟网卡驱动的弹窗,你选择同意就可以了。
Linux系统我选择的是CentOS7,是众多开源免费Linux发行版当中最适合用在服务器上面的,既安全又稳定。安装文件已经放在公众号中了。大家关注公众号,回复关键字【centos】就可以获取了。
1、创建虚拟主机
在安装Linux系统之前,我们要先创建出虚拟化主机,设置好硬件参数,我们才能安装CentOS系统
2、使用NAT网络
这里我建议大家选择NAT网络模式,虽然不如桥接网络功能强大,但是却能胜任校园网和上班族的需要。点击虚拟机上的设置按钮。
3、端口转发
因为我们把虚拟机的连接模式设置成NAT的话,我们虚拟机就没有独立的IP地址了,就需要使用我们自己电脑的IP地址进行上网,所以将来我们需要使用的一些Linux的端口,就需要映射到我们自己的电脑上才行。比如,很常见的来进行远程SSH连接的22端口,所以我们需要把Linux上的22端口,映射到我们本地电脑的一个端口上才行,我们这里映射到本地电脑的5022端口上,
这样我们访问我们自己电脑的5022端口,就可以访问Linux的22端口了。一会儿我用SSH客户端软件访问我们电脑上的5022端 口,就能连接到Linux系统了。
- 主机端口:就是我们自己电脑上的端口
- 子系统端口:这里是我们的Linux系统上的端口
4、插入CentOS镜像文件
选择存储,然后点击没有盘片选项,接下来在右侧点击光盘图标,弹出的选项,我们选择第二个。然后找到我们课程资料里的CentOs镜像文件。然后我们点击启动按钮,启动虚拟机
这时候就会进入正式的安装环节了。他会自动弹出一个新的命令行窗口,我们可以把鼠标点进去,如果想把鼠标从这个窗口里移动出来,需要按下快捷键ctr,mac上是command键,然后我们选择安装选项的第一个install CenOS 7
,然后按回车键确定。稍等一会虚拟机就会开始读取CentSO镜像文件里的内容了。
这时候会出现一个图形化的安装界面
我们这里语言选择中文,点击右下角的继续按钮,
这时候我们选择系统里的 安装位置,我们点进去,然后什么都不要改,再直接点击上方的完成按钮就行了
完成磁盘默认分区之后,我们再设置下网络连接,
我们点击打开按钮,把网络打开就行了,然后点击上面的完成按钮。
我们再点击右下角的开始安装按钮就行了。这时候会进入安装的界面。
在进行安装的时候,我们去设置下root用户的密码,
我自己这里设置的是root123,大家一定要记住这里设置的密码,到时候我们进行ssh连接的时候,会需要用到,接下来就等着安装完成就行了。
安装完成后,我们点击下面的重启按钮,什么都不要操作。等一会儿,它会自己重新运行虚拟机。然后出现下面这个画面。
我们输入刚刚创建的root用户名和密码就可以进行连接了。
出现这个界面,说明我们的Linux系统已经全部安装完成了。如果你想关闭掉这个Linux系统,直接把窗口关掉就行。
远程连接Linux系统
我们安装好了Linux系统之后,再通过远程命令行的方式来操控Linux系统。可能你平时习惯用图形化的远程桌面操控Windows系统,但是我们安装的Cent0s系统并没有外挂任何GUI图形界面,所以只能用命令行的方式去操控。去掉了GUI图形界面,Linux系统变得更稳定,占用系统资源更小,更适合高并发、高负载的环境。
ssh工具推荐
Windows系统上面,我们可以使用免费的MobaXterm工具连接Linux的SSH服务,mac上我们可以使用electerm工具连接Linux的SSH服务。
连接远程连接
新建远程连接的时候,我们选择SSH方式,然后填写上连接信息。因为虚拟主机的网卡是NAT模式,所以我们填写localhost和5022端口,就能连接上Linux系统了。填写的用户名是root,密码是你在安装linux系统的时候设置的密码。
安装docker环境
关闭SELINUX服务
SELINUX是Centos自带的安全服务,因为晦涩难用,并且跟很多程序冲突,所以强烈建议大家关闭这个服务.找到 /etc/sysconfig/selinux 文件,把其中的 SELINUX 设置为 disabled ,保存文件之后重启CentOS系统。
安装docker
yum install docker -y
启动docker服务
sql
service docker start
查看docker下的镜像文件
docker images
查看docker下的容器
docker ps
删除docker镜像
docker rmi 镜像名字
关闭docker服务
arduino
service docker stop
运行容器
sql
docker start 容器的ID/名称
docker start phoenix
docker start f03cf22f0309072fa0778396d3dc761ae77b0ed0ee5a521ac65f040eac7e2c0a
- phoenix 是容器的名字。
- f03cf22f0309072fa0778396d3dc761ae77b0ed0ee5a521ac65f040eac7e2c0a 是容器的ID。
结语
到这里整个docker环境就全部安装完成了,之后你就可以在docker上安装各种容器,镜像,快乐的进行开发与学习工作了。