目录

一、Docker概述

1、Docker是什么?

2、Docker核心概念

3、名称空间

4、与虚拟化相比docker的优势

5、docker的使用场景

6、Docker引擎(Docker Engine)

7、Docker架构(docker architecture)

二,实际操作


一、Docker概述

1、Docker是什么?

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

PS:Docker是基于容器技术的轻量级虚拟化解决方案

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

2、Docker核心概念

1.镜像 一个面向Docker容器引擎的只读模板 提供单一的格式的一个组合型/叠加型文件(资源集合),一组资源集合,包含了应用程序软件包、应用程序相关的依赖包、运行应用程序所需要的基础环境(泛指操作系统环境) 2.容器 从镜像创建的运行实例 基于镜像的一种运行状态 3.仓库 集中保存镜像的地方,存储镜像的地方,默认在公共的 Docker Hub上查找,可以搞个人仓库。 1.公有仓库:Docker官方仓库 docker hub ,github 2.私有仓库:个人化、私有化的仓库 registry(字符终端) ,harbor(web图形界面)gitlab

3、名称空间

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

mount 文件系统,挂载点

user 操作进程的用户和用户组

pid 进程编号

uts 主机名和主机域

ipc 信号量、消息队列,共享内存(不同的应用调用的时候应该使用不同的内存空间)

net 网络设备、网络协议、端口 命名空间:封闭的环境,在一个名称空间内不能有两个相同的技术栈,但是不同的命名空间可以一样

4、与虚拟化相比docker的优势

三个统一 ① 封装的模式image 镜像

② 运行时环境container 统一了基础环境设施

③ 统一的平台engine

docker与虚拟机的区别

虚拟化这种方式需要模拟一个完整的操作系统,容器不需要,可以共享内核,内核提供容器,这是显著区别。虚拟机管理器是软件程序,重量级程度不一样,对于虚拟机而言轻量级虚拟化产品。基于所说的特性存在一些问题,一个完整来宾操作系统,一个共享内核,启动速度不一样,一个秒级,一个分钟。对于虚拟机隔着抽象层,同时还会隔一层来宾操作系统所以性能会损耗。对虚拟机而言磁盘占用率几百兆,容器即使兆。虚拟机用的是完整操作系统使用centos体积很大,对于容器而言共享内核所以体积很小。由于摈弃了来并操作系统,容器是一个操作进程,虚拟机不是。对于运行而言容器可以运行几百台。不同容器之间使用的是进程隔离,而虚拟机由于是整个系统所以是系统级别的。相比较而言虚拟机隔离的更彻底。虚拟机而言操作系统支持才可以使用,只要操作系统能支持虚拟化,就可以使用无论是全虚还是半。对于容器主要用在linux只要安装了容器引擎什么操作系统都可以使用。完整来宾操作系统,内核。此处是完整的操作系统,与宿主机隔离的。容器上做到了三个统一:统一平台,统一运行时环境,统一封装模式,只要打包项目的代码和依赖的一个环境,可以共享宿主机内核。

5、docker的使用场景

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

IAAS :基础设施即服务(裸金属)

SAAS : 应用即服务(LAMP、LNMP)

PAAS : 平台即服务

6、Docker引擎(Docker Engine)

Docker Engine是具有以下主要组件的客户端-服务器应用程序(C/s端): 服务器是一种长期运行的程序,称为守护程序进程( dockerd命令)。 REST API,它指定程序可以用来与守护程序进行通信并指示其操作的接口。 命令行界面(CLI)客户端( docker命令)。

docker代替沙盒 docker是轻量级的沙盒_docker代替沙盒

 

7、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 上查找,可以使用个人仓库

二,实际操作

systemctl stop firewalld
setenforce 0

#安装依赖包
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内核中支持逻辑卷管理的通用设备映射机制,它为实现用于存储资源管理的块设备驱动

#设置阿里云镜像源
cd /etc/yum.repos.d
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

#安装Docker-CE并设置为开机自启
yum install -y docker-ce
systemctl start docker.service    #启动
systemctl enable docker.service   #开机自启

docker代替沙盒 docker是轻量级的沙盒_docker_02

docker代替沙盒 docker是轻量级的沙盒_docker_03

 

docker代替沙盒 docker是轻量级的沙盒_docker_04

 如果安装出错了,就需要打一下命令

yum install --setopt=obsoletes=0 \
   docker-ce-17.03.2.ce-1.el7.centos.x86_64 \
   docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch # on a new system with yum repo defined, forcing older version and ignoring obsoletes introduced by 17.06.0

 镜像加速器:阿里云-上云就上阿里云

docker代替沙盒 docker是轻量级的沙盒_Docker_05

docker代替沙盒 docker是轻量级的沙盒_运维_06

 

cd /etc/docker   #需先启动docker,才会有该目录 
tee /etc/docker/daemon.json <<-'EOF' 
{
  "registry-mirrors": ["https://..."]
}
EOF
systemctl daemon-reload		#修改了docker服务配置文件,可以使用重载使配置文件生效
systemctl restart docker
#网络优化
vim /etc/sysctl.conf
net.ipv4.ip_forward=1		#ipv4转发功能

sysctl -p   #刷新

docker代替沙盒 docker是轻量级的沙盒_docker代替沙盒_07