初步了解Docker

1、docker简介

(1)docker是什么

docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或者Windows机器上,也可以实现虚拟化。
容器是完全使用沙箱机制的,相互之间不会有任何接口。

补充:沙箱:sandboxie是一个虚拟系统程序,允许你在沙盘环境中运行浏览器或者其他程序,因此运行所产生的变化可以随后删除。它创造了一个类似沙盒的独立作业环境,在其内部运行的程序不能对硬盘产生永久性的影响。在网络安全中,沙箱指在隔离环境中,用以测试不受信任的文件或者应用程序等行为的工具。

(2)docker的工作模式

在这里插入图片描述
如图所示是docker的工作模式,由客户端发起请求,请求到达docker的守护进程,由docker的守护进程去做这件事,若是镜像(如1号路线)已经在本地,则可以直接使用,一个镜像可以产生多个容器,容器1、2、3都是由镜像1产生的,若是镜像(如2号路线)不在本地,docker守护进程则去仓库中下载镜像到本地,如下载的镜像2,这个仓库有docker官方仓库,需要联网下载,也可以配置属于个人的私有仓库。

2、docker容器与虚拟机有什么区别

(1)在虚拟机中运行应用

在这里插入图片描述
上图是我绘制的使用不同虚拟机运行相互隔离的应用时的框架图,下面解释一下此图。
Hardware(硬件):比如可以是电脑本身,云主机等等。
Host Operating System(主操作系统):在电脑之上运行的主系统,如Windows,Linux等等。
Virtualization Station(虚拟化管理系统):比如在Linux中使用的KVM。
Guest OS(从操作系统):各虚拟机独立使用的操作系统。
由此可知,在虚拟机中运行相互隔离的应用时,是基于不同的操作系统上分别运行应用APP1、APP2、APP3,所以隔离的比较彻底,但同时需要启动3个从操作系统,会占用较大的磁盘空间,也会消耗很多CPU和内存。

(2)在docker容器中运行应用

在这里插入图片描述
上图是我绘制的使用docker容器运行相互隔离的应用时的框架图,下面解释一下此图。
此图中没有了从操作系统,Docker Daemon取代了虚拟化管理系统。
Docker Daemon(Docker守护进程):它是运行在操作系统之上的后台进程,负责管理Docker容器。
Docker守护进程可以直接与主操作系统进行通信,为各个容器分配资源,也可以将容器与主操作系统隔离,并且将各个容器互相隔离。
由于不需要运行多个从操作系统,所以节省了大量的系统资源,但由于所有容器都是基于Docker守护进程的管理,所以docker容器的隔离没有虚拟机之间的隔离那么彻底。

(3)二者擅长的使用场景

虚拟机擅长的是彻底隔离整个运行环境,因为每个虚拟机有自己的从操作系统,各个系统之间隔离。虚拟机能提供最好的隔离效果和安全性,但成本较高,且速度较为缓慢。
Docker擅长的是隔离不同的应用,而不是整个运行环境。若每个容器运行的只有一个服务,会比较容易管理及监控,成本较低,且配置、释放及使用比虚拟机的迭代更加迅速。

3、安装docker

(1)安装docker包

yum install * -y |安装docker所需软件,软件有四个,在图中显示了
systemctl start docker |开启docker服务
systemctl enable docker |设置docker开机自启
在这里插入图片描述

(2)安装bash-*

安装bash-的目的是为了能自动补其docker的命令,若不安装,则无法自动补齐,安装后则可以。
yum install bash-
-y |安装bash-*的所有包

此时没有安装bash-*,docker命令无法补齐
在这里插入图片描述
安装bash-*
在这里插入图片描述
安装好后需要断开ssh,再重新连入才能生效,生效后docker命令可以补齐了
在这里插入图片描述

4、如何启动一个容器

(1)获取一个镜像

此处我下载了一个2048游戏的镜像,作为测试(右下角即是)

(2)导入镜像

docker load -i game2048.tar |将镜像导入
docker images |查看当前的所有镜像
docker history game2048:latest |查看指定镜像的创建历史
在这里插入图片描述

(3)使用该镜像运行一个容器

docker run -d --name game2048-test -p 80:80 game2048 |以game2048为镜像运行一个容器,容器名称为game2048-test,做了一个端口映射,虚拟机的80端口映射容器的80端口。

此处运行容器,但是报了错。
在这里插入图片描述
修改该文件,然后重启服务即可改正该错误
在这里插入图片描述
文件中添加的内容为:
在这里插入图片描述
再次运行容器时报错,因为此时80端口已经被第一次运行的容器所占用了,此时根据提示的容器ID删除第一次运行的容器,然后再次运行新的容器,新的容器运行时没有报错。
在这里插入图片描述

(4)打开一个浏览器测试

在浏览器网址中输入docker容器运行的虚拟机IP,即可访问到该虚拟机的80端口,然后映射到容器的80端口,从而访问到docker容器中的内容。
我用2048游戏进行测试,出现游戏界面,则说明测试成功。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值