以前对Docker的理解仅止于于会拉取,会启动。对其没有一个系统性的理解,鉴于目前k8s的火爆,还是有必要再去了解下Docker技术的原理和一些细节性的技术。那么就从头康一下,涉及代码的地方应该不多,毕竟Docker是偏运维这块的技术,命令行操作会比较多,所以每篇的记录应该不会太长。
Docker官网:https://www.docker.com/get-started
DockerHub官网:https://hub.docker.com/
简而言之,Docker是一种容器技术。火了好多年了,我是18年刚知道,19年才开始用,有时候日常用,平时工作也不用。。。
一、Docker的好处
日常做开发时,由于测试、生产环境某些软件比如jdk、tomcat、mysql版本不一致导致java web项目起不来的问题非常令人头疼,docker可以完美解决该问题:Docker将程序以及使用软件环境直接打包在一起,无论在那个机器上保证了环境一致。
而且使用docker的话,当需要部署多台服务器时,只需要将程序打包到镜像里,服务器需要哪些服务就打包哪些;这样的话部署效率会有极大的提升。
docker不像共享服务一样会有资源占用,这样描述不恰当,举个例子,假设我在两个tomcat上分别部署了两个web项目,有一个web项目死活起不来,发现是另一个tomcat把资源占满了,但是使用docker不会有这种问题,docker容器和容器间互不影响。
总结docker的三大优势:
优势1: 一致的运行环境,更轻松的迁移
优势2:对进程进行封装隔离,容器与容器之间互不影响,更高效的利用系统资源
优势3: 通过镜像复制N多个环境一致容器(比如tomcat多容器启动,通过映射到宿主机不同端口来实现)
我对优势3的描述是通过可以对镜像打包不同的服务对不同服务器有定制化设置,略有不同。
这张图比较好的描述了互不影响和复制。。。
二、Docker和虚拟机的区别
以前我觉得docker和虚拟机差不多,现在再仔细分析确实是粗鄙了,先说虚拟机:虚拟机是在操作系统上虚拟化了一个环境然后再去在上面装操作系统,然后再在这个操作系统上装服务,想到这里就非常的what s up了,冗余。而docker则可以直接在操作系统上使用docker引擎去拉取服务的镜像,然后作为容器再去启动服务,中间根本就没有依附于操作系统这一层嘛,所以高下立判,再细致比较下优劣:
三、安装Docker
好像听说在windows装可能会有问题啊,不过我也从没在windows上装过,在汕头os和ubuntu还有suse上都装过,不同操作系统安装指令也不一样(suse和ubuntu好像一样),比较麻烦,而且以前装的时候指令都是网上搜的也没做过记录,这里就记一个用bash拉取docker的命令吧,以后再装再用这个试试:
$ curl -fsSL get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh --mirror Aliyun #可以通过 `--mirror` 选项使用国内源进行安装:执行这个命令后,脚本就会自动的将一切准备工作做好,并且把 Docker 的稳定(stable)版本安装在系统中。
$ sudo systemctl enable docker #启动docker
$ sudo systemctl start docker #启动docker
$ sudo groupadd docker #创建docker用户组
$ sudo usermod -aG docker $USER #将当前用户加入用户组
$ systemctl status docker #测试docker是否安装正确
四、Docker核心架构
说白了,就是远程库拉镜像->镜像到本地->服务以容器方式启动,可以进入容器进行服务配置。
注意:镜像只读;容器可读写
架构图是爷花6块6毛6买的,有能力还是要支持正版呀😄