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

相关推荐
IpdataCloud1 分钟前
IP数据云 识别和分析tor、proxy等各类型代理
运维·服务器
想学习java初学者20 分钟前
Docker compose部署elasticsearch(单机版)
运维·docker·容器
人类群星闪耀时1 小时前
未来运维的发展趋势:运维领域的新技术与趋势
运维
落非1 小时前
NFS存储基础操作
运维
Vanish_ran1 小时前
gitlab与jenkins
运维·gitlab·jenkins
大风吹PP凉1 小时前
38配置管理工具(如Ansible、Puppet、Chef)
linux·运维·服务器·ansible·puppet
康熙38bdc2 小时前
Linux 进程间通信——共享内存
linux·运维·服务器
微刻时光2 小时前
Docker部署Nginx
运维·nginx·docker·容器·经验
小安运维日记2 小时前
CKA认证 | Day3 K8s管理应用生命周期(上)
运维·云原生·容器·kubernetes·云计算·k8s
陈小肚2 小时前
k8s 1.28.2 集群部署 docker registry 接入 MinIO 存储
docker·容器·kubernetes