1、docker简介

(1)docker是什么

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

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

(2)docker的工作模式

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

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

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

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

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

初步了解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开机自启
初步了解Docker

(2)安装bash-*

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

此时没有安装bash-*,docker命令无法补齐
初步了解Docker
安装bash-*
初步了解Docker
安装好后需要断开ssh,再重新连入才能生效,生效后docker命令可以补齐了
初步了解Docker

4、如何启动一个容器

(1)获取一个镜像

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

(2)导入镜像

docker load -i game2048.tar |将镜像导入
docker images |查看当前的所有镜像
docker history game2048:latest |查看指定镜像的创建历史
初步了解Docker

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

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

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

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

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

相关文章:

  • 2021-09-21
  • 2022-01-15
  • 2021-09-08
  • 2021-10-16
  • 2019-02-22
  • 2021-12-26
  • 2021-10-10
  • 2021-08-25
猜你喜欢
  • 2021-04-23
  • 2021-10-17
  • 2021-12-23
  • 2021-06-27
  • 2021-11-04
  • 2021-11-05
  • 2021-12-09
相关资源
相似解决方案