一分钟带你理解docker,并教你在自己电脑上安装docker环境。

一分钟带你理解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上安装各种容器,镜像,快乐的进行开发与学习工作了。

相关推荐
Asthenia04124 小时前
Spring AOP 和 Aware:在Bean实例化后-调用BeanPostProcessor开始工作!在初始化方法执行之前!
后端
Asthenia04125 小时前
什么是消除直接左递归 - 编译原理解析
后端
Asthenia04125 小时前
什么是自上而下分析 - 编译原理剖析
后端
Asthenia04125 小时前
什么是语法分析 - 编译原理基础
后端
Asthenia04125 小时前
理解词法分析与LEX:编译器的守门人
后端
uhakadotcom5 小时前
视频直播与视频点播:基础知识与应用场景
后端·面试·架构
Asthenia04126 小时前
Spring扩展点与工具类获取容器Bean-基于ApplicationContextAware实现非IOC容器中调用IOC的Bean
后端
bobz9657 小时前
ovs patch port 对比 veth pair
后端
Asthenia04127 小时前
Java受检异常与非受检异常分析
后端