Docker入门

一:什么是docker容器技术?

在docker未出现之前,我们若需要拥有多个不同的应用环境,安装多个应用,只能拥有多台或者虚拟多台服务器去实现,这对资源的要求与损耗是非常巨大的,docker的出现解决了这个困境,它是一种开源的虚拟化容器技术,可以让开发者打包他们的应用、依赖包、环境配置等到一个轻量级、可移植的容器中,他是一种类似于集装箱的实现,在一个服务器上,可以安装多个集装箱,每个集装箱内部,都是一套完整的应用环境,每个集装箱是动态共享主机的资源的,但是每个集装箱中的资源使用等情况是隔离的。

二:该技术实现的原理是什么?

Docker技术的实现与应用,主要基于三大块:容器、镜像、仓库,docker架构是一种C/S架构的的实现,开发人员在自己的编译环境中基于源码生成容器安装包即镜像,该镜像包主要包含了实现功能需要的源码、编译环境以及依赖,镜像生成后,会上送到镜像存储的服务器,即仓库,当前市场上有多种可使用的仓库,一种是公共仓库,比如docker官网的仓库:https://hub.docker.com/,国内较大的云厂商提供的仓库,比如阿里云的仓库,另一种是私有的仓库,使用者可以根据自己的需要自己搭建仓库环境。送到仓库后,哪个环境需要安装该镜像,就下载安装,安装后的镜像,就会形成容器,所以容器实际是镜像的实体展现。

那么docker到底是怎么运行的呢?Docker运行的底层原理,是利用linux的cgroups和namespace的特性,把容器当做一个系统的进程,进行资源分配跟隔离。Cgroups叫做控制组(Control Groups),主要是对linux下的资源进行分配限制,防止出现多容器情况下资源的竞争 ,Namespace叫做命名空间,一个namespace看上去就像是一个linux系统,通过namespace,把原有的空间隔离成多个空间。

Docker能实现轻量级的部署,还离不开的是docker使用的分层镜像系统,他采用联合文件系统AUFS实现的原理,最底层使用仅可读的镜像层,如果有修改下发,就在镜像层上面生成一个空的容器层存储修改动作,然后展示给视图层展示,每增加一次修改,就叠加一层容器层,以原有的容器层跟镜像层为新的镜像层(见下图);设备读取的时候从上往下依次读取,具体的表现就是Dockerfile的运行过程。

三:该技术是怎么用的呢?

1、Docker的运行架构:

Docker在运行时主要由docker引擎与客户端工具组成,docker引擎是docker的守护进程,docker工作过程中,通过CLI执行对应的请求命令,通过REST API发送给守护进程,进程解析命令,调用对应的对象执行。

为了让docker镜像构建容器的过程自动执行,docker用到了一个Dockerfile的命令集文本,可以在其中调用任何可在linux下执行的指令。具体可以参见docker官网对dockerfile命令格式的要求:https://docs.docker.com/reference/dockerfile/

Docker常用的命令可以参见:docker --help查看具体的命令使用

2、Docker的网络管理:

Docker支持三种模式的网络管理:Bridge(桥接)模式、Host模式、自定义模式;

Bridge模式是最常用的网络模式,也是当前docker的默认网络模式,服务安装后,他会默认生成一个docker0网段为172.17.0.0/16的网桥,然后每启动一个容器,就会创建一对网卡,这对网卡一个在主机上,一个在容器内部,然后容器之间通信就通过docker0进行通信,docker0就相当于一个交换机。

Host模式:host模式下,容器不再拥有自己的网络空间,而是与主机共享网络空间,容器的ip与主机的ip是在同一网段,各个容器的网络都是互通的;

自定义模式:docker会拥有自己的网络空间,不与主机共存,在该模式下的容器,不会被分配网卡、ip、路由相关信息,是与外部网络完全隔离的,只有本地的localhost地址。不同容器网段进行通信,需要使用docker network配置网络连接关系。

3、Docker的容器编排:

Docker的容器编排工具分为两种模式,一种是单机模式下的容器编排,一种是集群模式下的容器编排,容器编排主要是对容器生命周期进行管理的行为。

Docker compose:单机模式下的容器编排,他是通过创建docker-compost.yml的文件来定义一台服务器上多个容器运行所需的各种配置信息。

Docker-compose的安装:

(1)下载docker-compose版本:(时间较长,耐心等待)

sudo curl -L "https://github.com/docker/compose/releases/download/v2.5.1/docker-compose- ( u n a m e − s ) − (uname -s)- (uname−s)−(uname -m)" -o /usr/local/bin/docker-compose

(2)对docker-compose赋予可执行权限:chmod +x /usr/local/bin/docker-compose

(3)创建软链接:ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

(4)查看是否安装成功:docker-compose --version

Swarm:集群模式下的docker容器编排,是docker公司推出来的docker集群管理的平台,swarm集群分为管理节点和工作节点,swarm工具的大部分命令是在管理节点进行执行的,一个swarm集群可以有多个管理节点,但只有一个管理节点可以成为leader,一般第一个启用的节点会成为leader,工作节点是任务执行的节点,管理节点将服务下发至工作节点,工作节点调用task执行。Swarm提供可视化界面,可以监控集群的状态。

四:如何练习使用该技术?

1、创建虚拟机,使用centos镜像启动

2、配置虚拟机访问的网络信息

3、在虚拟机上使用命令安装docker所需的工具:

yum install y yum utils device-mappen-persistent-data lvm2

4、添加软件源信息:yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

5、安装docker:yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

6、启动docker:systemctl start docker

7、验证安装是否成功:docker version

8、拉起具体的镜像:docker run xxx

相关推荐
C++忠实粉丝34 分钟前
Linux环境基础开发工具使用(2)
linux·运维·服务器
康熙38bdc1 小时前
Linux 环境变量
linux·运维·服务器
存储服务专家StorageExpert1 小时前
DELL SC compellent存储的四种访问方式
运维·服务器·存储维护·emc存储
大G哥2 小时前
记一次K8S 环境应用nginx stable-alpine 解析内部域名失败排查思路
运维·nginx·云原生·容器·kubernetes
醉颜凉2 小时前
银河麒麟桌面操作系统修改默认Shell为Bash
运维·服务器·开发语言·bash·kylin·国产化·银河麒麟操作系统
大道归简3 小时前
Docker 命令从入门到入门:从 Windows 到容器的完美类比
windows·docker·容器
苦逼IT运维3 小时前
YUM 源与 APT 源的详解及使用指南
linux·运维·ubuntu·centos·devops
仍有未知等待探索3 小时前
Linux 传输层UDP
linux·运维·udp
zeruns8024 小时前
如何搭建自己的域名邮箱服务器?Poste.io邮箱服务器搭建教程,Linux+Docker搭建邮件服务器的教程
linux·运维·服务器·docker·网站
爱跑步的程序员~4 小时前
Docker
docker·容器