docker简介

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

以上是百度百科的介绍,关键的地方有容器,虚拟化。

容器

大家在开发的过程中很可能会遇到这样的情况,一个同事在自己的电脑上开发完成之后,到另一个同事的电脑运行不了,这里很大可能是不同电脑的配置环境不一致导致的,这样极大地影响开发效率,而docker容器就可以解决这个问题,开发完成之后的可以把应用打包成一个镜像,因为这个镜像包好自己运行所需要的环境,因此在其他的电脑也是可以运行的。

上面那段话提到了镜像和容器,那两者的区别是什么呢?

他们两者的关系和程序里面的类和对象一样;其中镜像就像程序里面的类、容器就像程序里面的对象。所以镜像就是定义了一个可以移植、运行的包,容器就是在将该镜像运行了起来,当下载一个镜像之后,可以运行多个一样的容器。

虚拟化

作为一名开发者,很多人都应该和虚拟机打过交道;一般流程:先要装vmare或者virtulBox工具,然后在工具里面装上相应的系统,实现了虚拟化。但是都知道用这样的一种方式去实现虚拟化是非常地耗内存和吃资源的,一般在系统里面装不了几个虚拟机,卡顿不可避免。而容器技术呢,相对于虚拟机技术它本身的体积非常的小,只保留核心的东西,并且它的底层实现也是不一样。如下:

docker和nginx部署优缺点 nginx和docker区别_linux


图1 VM和Containers技术对比

其中左边的图就是虚拟机技术,它在操作系统的基础上通过Hyper虚拟化成一个个GuestOS,而GuestOS也是一种操作系统,因此它在本身宿主机原有的基础上又重新为每一个虚拟机虚拟了对应的一套虚拟硬件系统,所以本身非常的笨重。而容器技术通过一个Docker Engine和操作系统建立连接,并且该引擎被所有的容器共享,因此相当没有经过更多的抽象,因此其体积更小,运行更快。

经过对比docker是更加优秀的。

docker的运行原理:

如下图所示,docker采用C/S架构,使用socket实现客户端和服务端通信的,其中的daemon是docker守护进程,客户端输入命令就是通过守护进行和服务端打交道,包括(创建,运行,分发容器等请求)。

docker和nginx部署优缺点 nginx和docker区别_linux_02


图2 docker工作原理

Docker常见的命令

例子:创建ngnix镜像和启动容器

# 镜像查询 nginx
docker search nginx

docker和nginx部署优缺点 nginx和docker区别_docker_03

# 镜像拉取 如nginx
docker pull nginx

docker和nginx部署优缺点 nginx和docker区别_docker_04

# 查看镜像
docker images

docker和nginx部署优缺点 nginx和docker区别_虚拟化_05

# 创建容器,运行容器,后台运行,命名,端口映射
docker run -d --name nginx02 -p 3343:80 nginx

docker和nginx部署优缺点 nginx和docker区别_nginx_06

# 进入容器
docker exec -it nginx02 /bin/bash

# 退出容器
exit

docker和nginx部署优缺点 nginx和docker区别_docker和nginx部署优缺点_07

# 查看运行中的容器
docker ps

docker和nginx部署优缺点 nginx和docker区别_虚拟化_08

# 创建容器之后,停止nginx02容器
docker stop nginx02
# 启动已存在容器nginx02
docker start nginx02

在创建容器时,进行了端口映射:将宿主机的3343端口映射到了容器nginx02的80端口,现在就可在网页可以访问容器啦。

# 网页输入
http://localhost:3343

如下,可以在浏览器看到如下展示:

docker和nginx部署优缺点 nginx和docker区别_nginx_09

结束语

以上就是docker的简单介绍,可以下载安装练习一下,应该算是开发者的必备技能啦。