Docker基础概念及部署安装

一、Docker概述

背景:

以Linux而言,linux操作系统会有一个主进程pid=1派生出其他进程来控制不同服务
例如:
pid=2—>python (pid=3)—> java(pid=4)—>php(pid=4),三个服务可能会互相影响,但是希望这三个服务分别封装起来(可以使用kvm虚拟化技术,实现一个操作系统模拟多个操作系统/不同的运行时环境)随着技术的发展,虚拟化技术开销较大(比如:我只想运行一个python脚本,如果使用kvm虚拟化技术就需要安装一个操作系统并不方便/合理,安装一个kvm操作可能花费的时间更多)所以由此产生容器技术,虚拟化层的抽象层(用户层)剥离,使用docker egine来代替(来宾操作系统去除),只通过引擎就可以直接连接到宿主机操作系统中,减少了开销

(一)Docker是什么?

  • 是一种轻量级的 “虚拟机”
  • 在Linux容器里运行应该的开源工具

Docker是一个用于开发,交付和运行应用程序的开放平台。Docker使您能够将应用程序与基础架构分开,从而可以快速交付软件。是一个开源的应用容器引擎,让开发者以打包方式封装应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或者windows机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口
(沙箱(Sandbox):在计算机安全领域,沙箱是一种程序的隔离运行机制)

Docker在2013年一炮而红,直到现在,已经成为容器技术的代名词。
Docker从一开始就以提供标准化的运行时环境为目标,真正做到"build once,run anywhere",可以将同一个构建版本用于开发、测试、预发布、生产等任何环境,并且做到了与底层操作系统的解耦。在此基础上还进一步发展出了Caas(容器即服务)技术。
总结:Docker是基于容器技术的轻量级虚拟化解决方案

docker是容器引擎,把linux的cgroup、namespace等容器底层技术进行完美的封装、并抽象为用户提供创建和管理容器的便捷界面(命令行Cli、api等)docker也是一种C/S架构,client和server端工作在一起
(cgroup:资源管理技术(是谷歌开发集成在linux中))

(二)Docker核心概念

1.镜像

  • 一个面向Docker容器引擎的只读模板
    提供单一的格式的一个组合型/叠加型文件(资源集合),一组资源集合,包含了应用程序软件包、应用程序相关的依赖包、运行应用程序所需要的基础环境(泛指操作系统环境)

2.容器

  • 从镜像创建的运行实例
    基于镜像的一种运行状态

3.仓库

  • 集中保存镜像的地方
    1.公有仓库:Docker官方仓库 docker hub ,github
    2.私有仓库:个人化、私有化的仓库 registry(字符终端) ,harbor(web图形界面)gitlab

(三) 应用于应用的隔离

以操作系统维度应用与应用隔离,在操作系统中,是通过namespaces实现的,只要实现以下6个空间隔离,才能认为两个应用实现了隔离
容器隔离了6个名称空间(namespace资源隔离-用容器化技术封装)

mount文件系统,挂载点
user操作进程的用户和用户组
pid进程编号
uts主机名和主机域
ipc信号量、消息队列,共享内存(不同的应用调用的时候应该使用不同的内存空间)
net网络设备、网络协议、端口

命名空间:封闭的环境,在一个名称空间内不能有两个相同的技术栈,但是不同的命名空间可以一样

pid命名空间:进程隔离(pid:进程ipd号)
net命名空间:管理网络(net:网络)
ipc命名空间:管理访问ipc资源(ipc:进程间通信)
mnt命名共享:管理文件系统挂载点(mnt:mount挂载)
uts命名空间:隔离内核文件和版本标识符(uts:unix时间共享系统)

(四)与虚拟化相比docker的优势

docker 引擎统一了基础设施环境-docker环境(image封装一个简易的操作系统)
docker引擎统一了程序打包(装箱)方式-docker镜像(image)
docker 引擎统一了程序部署(运行)方式-docker容器(基于image运行,容器)

使用方向(app 小程序 微信小程序)
在这里插入图片描述
docker与虚拟机的区别

特点Docker容器虚拟机
启动速度秒级分钟级
计算能力损耗几乎没有损耗(接近原生直接在内核中运行)损耗50%左右
磁盘占用MBGB(操作系统镜像2G)
系统支持数量成百上千一般几十台(操作系统级别)
操作系统主要支持Linux几乎所有
隔离性进程级别,资源隔离/限制系统级别,完全隔离(更彻底安全)
封装程度只打包项目代码和依赖关系,共享宿主机内核完整的操作系统,与宿主机隔离

docker解决了vm的孤岛问题:可以自定义传参

(五)docker的使用场景

1.打包应用程序简单部署
流程:将应用程序代码 ,打包成war包或jar包——>放入私有仓库中(代码仓库)——>jenkins等工具,jenkins可以查看代码构建镜像失败的原因,相当于简单测试(构建镜像/应用程序封装)——>运维下载,或使用容器技术进行运行/发布
2.可脱离底层硬件任意迁移(实现了应用的隔离,将应用拆分并进行解耦)比如云服务器迁移
3.持续集成和持续交付(CI/CD):开发到测试发布
4.部署为服务
5.提供PAAS产品(平台即服务)openstack的云主机类似于阿里云的ecs,属于IAAS,Docker(K8s)属于PAAS

(六)Docker引擎(Docker Engine)

Docker Engine 是具有以下主要组件的C/S客户段——服务器应用程序;
server端:服务器是一种长期运行的程序。称为守护程序进程(dockerr命令)
clinet:rest api,指程序可以用来与程序进行通信并指示其操作的接口
命令行界面(cli)客户端(docker命令)
docker run
docker start
docker rm

(七)Docker架构(docker architecture)

1.docker使用客户端——服务器架构。docker 客户端与docker守护进程进行对话,该守护进程完成构建,运行和分发docker容器的繁重工作。Docker区别于传统的虚拟化,不需要虚拟硬件资源,hi姐使用容器引擎,所以速度块

2.docker client:客户端/提供一个于用户交互,展示的平台+管理,控制docker服务端(命令行)

3.docker客户端(docker)是许多docker用户与docker交互的主要方式,当您使用比如docker run命令是客户端将这些命令发送到dockerd,以执行这些命令。该docker命令使用docker api。docker客户端可以与多个守护进程通信

4.docker daemon:守护进程

5.docker守护程序(docker)侦听docker
api请求并管理docker对象,例如图像,容器,网络和卷。守护程序还可以与其他守护进程通信以管理docker服务

6.docker image(镜像)
容器可以被打包成镜像

  • docker container :容器
  • docker registry :镜像仓库
    储存镜像的地方,默认在公共的docker hub 上查找,可以使用个人仓库

二、部署20版docker

关闭防火墙及安全机制

systemctl stop firewalld
systemctl disable firewalld
setenforce 0 
vim /etc/selinux/config
SELINUX=disabled

1.安装依赖包

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

#yum-utils提供了yum-config-manager,yum的管理工具
#device-mapper-persistent-data 容器引擎的存储驱动
#device mapper存储驱动程序需要device-mapper-persistent-data和lvm2
#Device Mapper 是Linux2.6内核中支持逻辑卷管理的通用设备映射机制,它为实现用于存储资源管理的块设备驱动

在这里插入图片描述

2.设置阿里云镜像源

cd /etc/yum.repos.d
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3.安装Docker-CE

yum install -y docker-ce

systemctl start docker.service 
systemctl enable docker.service

在这里插入图片描述

4.配置阿里云的镜像加速

  • 加速地址从阿里云官网获取::https://account.aliyun.com/
  • 获取方式:登录阿里云–>控制台–>在上面搜索容器镜像服务–>左下角的镜像加速器—>根据文档操作

根据文档操作

mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://..."]
}
EOF
systemctl daemon-reload		#修改了docker服务配置文件,可以使用重载使配置文件生效
systemctl restart docker

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.优化网络

vim /etc/sysctl.conf
net.ipv4.ip_forward=1		#ipv4转发功能

sysctl -p

systemctl restart docker 或 service network restart

三、基础命令

1.查看docker版本信息

docker version

在这里插入图片描述

2.docker配置文件可选项

生产环境

vim /etc/docker/daemon.json		#守护进程配置文件server端

  "graph":"/data/docker",		#数据目录
  "storage-driver":"overlay2",	#存储引擎
  "insecure-registries":["registry.access.redhat.com","quary.io"]	#私有仓库
  "registry-mirrors": ["https://..."]		#镜像加速
  "bip":"172.190.11.1/24",		#docker网络,表示docker 是哪台,建议当前服务器地址后两端 192.168.190.11/24 ,更容易故障定位
  "exec-opts":["native.cgroupdriver-systemd"],	#启动时的额外参数
  "live-restore":true			#当docker容器引擎挂掉的时候,使用docker跑起来的容器还能继续运行

systemctl daemon-reload
systemctl restart docker

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值