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

相关推荐
阿梦Anmory9 分钟前
Ubuntu配置代理最详细教程
linux·运维·ubuntu
呉師傅22 分钟前
【使用技巧】Adobe Photoshop 2024调整缩放与布局125%后出现点菜单项漂移问题的简单处理
运维·服务器·windows·adobe·电脑·photoshop
heartbeat..25 分钟前
JVM 性能调优流程实战:从开发规范到生产应急排查
java·运维·jvm·性能优化·设计规范
小章UPUP38 分钟前
Kubernetes (K8s) 与 Podman 的比较
容器·kubernetes·podman
忆~遂愿42 分钟前
CANN metadef 核心解析:计算图原型定义、算子元数据抽象与异构系统互操作机制
docker·容器
小Tomkk1 小时前
数据库 变更和版本控制管理工具 --Bytebase 安装部署(linux 安装篇)
linux·运维·数据库·ci/cd·bytebase
赌博羊1 小时前
ImportError: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32‘ not found
linux·运维·gnu
消失的旧时光-19431 小时前
Linux 入门核心命令清单(工程版)
linux·运维·服务器
艾莉丝努力练剑1 小时前
【Linux:文件】Ext系列文件系统(初阶)
大数据·linux·运维·服务器·c++·人工智能·算法
小天源2 小时前
Cacti在Debian/Ubuntu中安装及其使用
运维·ubuntu·debian·cacti