最近,Docker技术真是一片火热,它的出现也弥补了虚拟机资源消耗过高的问题,直接让虚拟化技术有了质的飞跃。那么本文我们来聊一聊Docker,和大家一起认识Docker,简单入门Docker.
1. 阶段一:无虚拟化技术
众所周知,在虚拟化技术出现之前,我们依靠扩展物理机的方式来扩展我们的应用,这个阶段很痛苦,也有很多的缺点,比如:
2. 阶段二:基于Hypervisor的虚拟化技术
这个阶段,出现的虚拟化技术让很多人开心不已,随着时间的流逝,市面上也出现不少相关的实际应用的技术,如:VMware、KVM、AWS、Microsoft的Hyper-V等。
基于Hypervisor的虚拟化技术的优点:
基于Hypervisor的虚拟化技术的缺点:
3. 阶段三:基于容器的虚拟化技术
由于Hypervisor的虚拟化技术不是很完美,对内核的资源重复消耗,那随着技术的发展就出现了基于容器的虚拟化技术,最热的就是Docker Container了。它底层使用CGroup和Namespace来实现多个容器之间共享内核资源。而且它还能保证运行时相互隔离,互不影响。
基于容器虚拟化技术的优点:
运行时隔离,最典型的应用就是使得我们可以很方便和简单的实现在同一台机器上运行基于不同版本Java开发的应用。如下图:
基于Hypervisor的虚拟化技术 VS 基于容器的虚拟化技术
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce
systemctl start docker
yum remove -y docker docker-common docker-selinux docker-engine
注:如果在没有启动docker的情况下运行[docker info]命令,则会出现:Cannot connect to the Docker daemon. Is the docker daemon running on this host? 错误。
yum install -y docker
docker version
docker info
49000~49900
的端口到内部容器开放的网络端口
前台运行 VS 后台运行
最典型的案例是:当我们运行tomcat镜像的时候,我们需要为该容器指定向外暴露的端口以及查看容器运行时tomcat的日志信息。
49000~49900
的端口到内部容器开放的网络端口
下面是一个简单的Dockerfile文件
FROM centos:7
LABEL maintainer "hafiz.zhang(hafiz.zhang@example.com)"
RUN yum update -y
RUN yum install -y git
Docker build 上下文
通过本文,我们就对Docker有了一个直观的理解,也明白了如何从远程仓库拉取镜像,运行镜像,如何进行端口映射等等Docker基础知识。感觉很充实~