最近Docker容器化部署特别火热,那为什么说Docker是下一代的容器工具?回答这个问题之前,我们就服务器的历史演变来简单说明一下。
服务器变化演进
物理服务器又名独立服务器,顾名思义,就是一个躺在机房的实实在在的物理服务器。简单描述就是一个物理机上先安装操作系统,然后直接安装运行我们的应用软件。
物理服务器架构
这样的缺点很明显:
一个物理机上虚拟化出来多个虚拟机,每个虚拟机上进行安装操作系统,然后在虚拟机上直接安装运行我们的应用软件。例如阿里云、腾讯云等云服务器都属于虚拟机。
虚拟服务器架构
这样的优势是:
缺点:
虚拟化是物理硬件的隔离,容器化是app层面的隔离。容器化是基于虚拟机基础上做的资源隔离。Docker 容器和文件夹很类似,一个Docker容器包含了所有的某个应用运行所需要的。
Docker:容器化技术的一种具体实现。
容器化服务器架构
这样的特点是:
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的linux服务器,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类iphone的app),并且容器开销极其低。
Docker容器架构
Docker 包括三个基本概念:
Docker Daemon 是Docker的守护进程,Docker Client通过命令行与其通信,完成Docker的相关操作。
Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器;
Docker 容器通过 Docker 镜像来创建;
容器与镜像的关系类似于面向对象编程中的对象与类。
我们使用Docker来测试一下HelloWorld(由于安装过程不同系统存在差异,自行baidu即可~)。
step1:通过输入docker pull hello-world来拉取镜像
[root@web1 overlay2]:~$ docker pull hello-world
Using default tag: latest
latest: Pulling from library/hello-world
0e03bdcc26d7: Pull complete
Digest: sha256:49a1c8800c94df04e9658809b006fd8a686cab8028d33cfba2cc049724254202
Status: Downloaded newer image for hello-world:latest
docker.io/library/hello-world:latest
step2:从仓库拉取到了HelloWorld的镜像
[root@web1 overlay2]:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest bf756fb1ae65 6 months ago 13.3kB
step3:我们来运行一下,通过docker run hello-world
[root@web1 overlay2]:~$ docker run hello-world
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
如出现上图的内容,则说明hello-world测试运行成功。
总结
本文主要就服务器的历史演变过程介绍了Docker的新特性,以及扩展介绍了Docker的架构设计及简单上手应用。
Docker的功能和特性还有很多,各种运行命令、参数等也都有待学习和练习,比如如何管理数据、如何管理网络、如何互相配合工作、如何编写更专业的Dockerfile等。本文先入门科普为主,以后有时间再慢慢更新关于Docker的知识。