Docker 是什么

Docker 作为一款热门的容器技术,在工作中多多少少都会接触过,尤其在流量较大的互联网公司中(比如电商平台)实现微服务治理、高并发架构,Docker搭配K8S等编排工具起到很大的作用。

传统的项目开发部署中,我们一般是先在本地环境开发测试,然后打包部署到远程服务器上。得益于云的发展,使得我们可以直接利用PaaS能力进行资源的打包和分发,从而对应用进行托管。这种部署方式经常需要对每台虚拟机进行单独的环境配置,不仅麻烦,还不好迁移维护。

Docker本身解决了PaaS打包的痛点,提供了一种新的打包机制,将需要的操作系统、应用以来以及应用本身打成一个压缩包。这个压缩包保证了所有部署环境的一致,“Build, Ship and Run Any App, Anywhere"。这种方式也让后续应用的分发、部署、扩展变得丝滑。

Docker 能做什么

那我们平时能拿Docker或者容器做什么呢?场景还是蛮多的,比说教学过程中,提供轻量级的独立环境,用于学习开发、测试;再比如个人开发学习,使用docker可以无限操作,不影响到自己的电脑环境,优雅的很。

不过这些呢,怎么说更像是个人使用,并不能完全体现出Docker的魅力。Docker或者说容器的大杀器是它本身与编排治理的工具搭配一套组合拳。一方面,使用Docker部署足够轻量、足够高效,加速了本地开发和构建流程,能够让同一个服务在不同环境表现一致(alpha、beta、gama环境),给服务横向扩展提供了可能(对比以前的加机器);另一方面K8S为主的编排治理工具给容器注入了灵魂,提供了负载均衡、动态扩展、自动化部署等能力,更方便的部署大规模服务。

像电商网站,使用微服务架构,可以根据每个微服务的情况使用k8s动态扩展或者收缩Docker实例数,比如营销系统部署80个实例,而售后系统可能只部署4个实例。让并发量大的服务部署更多的实例。

Docker 的架构

从官网图中可以看出Docker的核心组件:

  • Docker 客户端和Docker 服务器
  • Docker 镜像
  • Registry
  • Docker 容器

Docker是一个客户-服务器(C/S)架构的程序。Docker Client将自己的命令透传到服务端daemon进程,然后等待Docker daemon的响应,也就是说Docker daemon是真正干活的。

举个hello-world例子

docker run hello-world
  • Docker会先从本地查看是否有hello-world镜像,如果有,则直接以该镜像为模板运行一个新的容器实例出来
  • 如果没有hello-world镜像,则默认从DockerHub中拉取,也就是上面提到的Registry (镜像仓库)- 里面存有很多应用镜像。
  • Docker daemon 根据镜像创建一个新的容器并运行起来。

从上面也发现用户是基于镜像来运行自己的容器的,我们可以类别iso,或者看成是容器的静态“源代码”。镜像是基于联合文件系统的层次结构,体较小,方便分享、传输。

同样的容器可以看作是一个跑起来的镜像,是一个动态的执行环境。我们可以将自己的应用程序或服务打包放进容器中运行起来。

Docker 安装

Docker 本身是运行在Linux上上面的,而Windows或者Mac都是通过虚拟机模拟出来的,所以推荐直接在Linux安装。

安装Parallels Desktop虚拟机

如果不是mac 系统不用执行者一步或者mac仅仅体验docker功能,可以直接使用mac 版本的docker-desktop

主要是在Paralles Desktop中安装ubuntu系统。

然后进入Ubuntu系统中安装基本使用命令

sudo apt updatesudo apt install -y git vim curl jq

安装Docker

可以尝试执行docker命令,如果没有安装的话,ubuntu本身会提醒你如何安装。

Command 'docker' not found, but can be installed with:
sudo apt install docker.io

所以安装过程如下:

#安装Docker Engine
sudo apt install -y docker.io 

#启动docker服务,如果觉得麻烦可以加入系统启动中
sudo service docker start 

#当前用户加入docker组
sudo usermod -aG docker ${USER} 

最后一个命令是将用户加入Docker的用户组(操作 Docker 必须要有 root 权限),这样就不用每次都切换到root权限进行操作了,不过你也可以继续使用root进行操作。

安装完成后可以进行验证下,执行docker versiondocker info命令,docker info会列出当前 Docker 系统相关的信息,例如 CPU、内存、容器数量等。

Docker 与虚拟机的对比

10分钟快速掌握Docker必备基础知识 - 掘金

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐