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

相关推荐
极客柒10 分钟前
RustDesk 开源远程桌面软件 (支持多端) + 中继服务器伺服器搭建 ( docker版本 ) 安装教程
服务器·docker·开源
只是橘色仍温柔22 分钟前
xshell可以ssh连接,但vscode不行
运维·vscode·ssh
IT里的交易员27 分钟前
【系统】换硬盘不换系统,使用WIN PE Ghost镜像给电脑无损扩容换硬盘
运维·电脑
共享家952738 分钟前
深入剖析Linux常用命令,助力高效操作
linux·运维·服务器
小刘爱喇石( ˝ᗢ̈˝ )42 分钟前
玛卡巴卡的k8s知识点问答题(七)
云原生·容器·kubernetes
大刘讲IT1 小时前
制造业数字化转型:流程改造先行还是系统固化数据?基于以MTO和MTS的投资回报分析
运维·经验分享·生活·产品经理·数据可视化
吃旺旺雪饼的小男孩1 小时前
Ubuntu 22.04 安装和运行 EDK2 超详细教程
linux·运维·ubuntu
阿政一号2 小时前
Linux进程间通信:【目的】【管道】【匿名管道】【命名管道】【System V 共享内存】
linux·运维·服务器·进程间通信
方渐鸿2 小时前
【2025】快速部署安装docker以及项目搭建所需要的基础环境(mysql、redis、nginx、nacos)
java·运维·docker·持续部署·dockercompse
小哈里2 小时前
【运维】云计算的发展历程,云原生时代的运维理念&工具技术栈,高可用系统的云运维 —— 以K8S集群调度算法与命令为例
运维·云原生·kubernetes·云计算·架构设计