目录
前言
在docker出现以前,一款产品的上线,需要两套环境,从开发到上线的环境,和应用配置都是不太一样的。在开发环境和应用环境(开发----运维)容易出现一些问题,比如,在我的电脑上开一运行,但是,版本更新,导致服务不可用,对于运维压力很大,直到docker的出现
一、Docker简介
Dcoker是基于容器技术的轻量级虛拟化解决方案,docker是由容器引擎,把linux的cgroup、namespaces等容器底层技术进行完美的封装、并抽象为用户提供创建和管理容器的便捷界面(命令行Cli、api等) C/s
1、Docker的优势
- docker引擎统一了基础设施环境:docker环境------》image------>封装一个简易的操作系统(3.0+G)
- docker引擎统一了封装应用(装箱/封装-类比于集装箱)方式:docker镜像一》 images
- docker 引擎统一了运行时环境:docker容器一 》基于镜像——》运行为容器(可运行的环境)
实现了一次构建、多次、多处使用
2、docker的使用场景
-
打包应用程序简单部署
-
可脱离底层硬件任意迁移(实现了应用的隔离,将应用拆分并进行解耦),例如:服务器从腾讯云迁移到阿里云
-
持续集成和持续交付(CI/CD):开发到测试发布/4、部署微服务
-
提供PAAS产品(平台即服务) {OpenStack的 云主机类似于阿里云的ECS,属于IAAS;Docker (K8S) 属于PAAS
3、Docker引擎
Docker Engine是具有以下主要组件的C/S客户端—服务器应用程序:
1、server端:服务器是一种长期运行的程序,称为守护程序进程(dockerd命令)
2、CLIENT端: REST API,它指定程序可以用来与守护程序进行通信并指示其操作的接口
通过client客户端传入命令,比如以下:
docker run:运行
docker start:开启
docker rm:删除
与sever端进行交互,控制server端进行应命令的操作
4、容器的几大组件
- 镜像:模板;组资源集合,包含了应用程序软件包、应用程序相关的依赖包、运行应用程序所需要的基础环境(泛指操作系统环境),可以理解为容器的模板
- 容器(Docker container):基于镜像的一种运行时状态
- 仓库(Docker reqistry):存放image镜像模板;仓库分类: 1、公共仓库一》docker hub,私有仓库registry harbor
5、容器与虚拟化的区别
6、容器的名称空间
名称空间( Namespaces):提供容器的隔离工作区的技术
容器隔离了6个名称空间
Mount:文件系统挂载点。一个文件系统内,不能重复挂载一个指定目录
User:操作进程的用户和用户组
Pid:进程编号
Uts:主机名和主机域
Ipc:信号量、消息队列、共享内存(不同的应用调用内存资源时候使用不同内存空间)
Net:网络设备、网络协议栈、端口等
Cgroups、linux内核态资源管理模块
Cgroups 管理一些系统资源
该pid命名空间 :进程隔离(pid、进程id)
该net命名空间 :管理网络接口(NET:网络)
该ipc命名空间 :管理访问IPC资源(IPC:进程间通信)
该mnt命名空间 :管理文件系统挂载点
该uts命名空间 :隔离内核和版本标识符
二、部署docker
yum install -y yum-utils device-mapper-persistent-data lvm2
#安装依赖环境
cd /etc/yum.repos.d/
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-
ce/linux/centos/docker-ce.repo
yum install -y docker-ce
systemctl start docker
#设置阿里源,安装并开启docke
cd /etc/docker/
直接输入
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://t466r8qg.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker
#设置镜像加速(可加可不加)
vim /etc/sysctl.conf
net.ipv4.ip_forward=1
sysctl -p
#网络优化,开启路由转发
docker配置文件daemon.json
vim /etc/docker/daemon.json ##docker配置文件还可以添加以下的建立配置:
{
"graph": "/data/docker", ##数据目录
"storage-driver": "overlay2", ##存储引擎;版本迭代:LXC——>overlay——>overlay2(overlayfs:文件系统,解决docker镜像分层)
"insecure-registries": [" registry.access.redhat.com", "quary.io"] ##私有仓库位置
"registry-mirrors": ["https://q***"] ##镜像加速
"bip": "172.7.5.1/24", ##docker网络;控制网段的位置;需要创建新的网桥,系统默认的docker0是不变的
"exec-opts": ["native.cgroupdriver-systemd"], ##启动时候的额外参数(驱动)
"live-restore":true ##当docker容器引擎挂掉的时候,使用docker跑起来的容器还能运行(分离)
以上docker就部署完成了