Docker容器如何使用
一、概述
1.案例
远洋运输案例:生活案例
- 需求:远洋运输以下商品,要求保证产品安全同时要高效完成运输
- 西瓜问题:
汽车放在了西瓜上,钢筋放在了玻璃杯上,汽车放在了钢琴上,是有放在了服务器上… - 运输方案:
将汽车,香蕉,钢琴,玻璃杯等产品装入集装箱,然后将集装箱装运到港口码头,将集装箱状图货运船只完成运输。
服务开发运行案例:实际工作案例
- 需求:在服务器上完成一个普通的web项目的部署,该项目同时使用到了缓存和数据库;后期服务会有扩展可能。
- 西瓜问题:
部署web服务需要安装jdk,tomcat/jetty等服务,如果忘记将导致服务无法启动… - 原始化部署方案:
1).单机部署方案
2).集群化部署
3). 其他问题:
A.服务安装问题:安装jdk,tomcat,nginx,redis,mysql等服务繁琐且容易出错,案例
B.资源占用问题:硬件资源浪费
C.服务扩展问题:服务集群化扩展困难,风险高。 - Docker部署方案
1).单应用版部署方案
2).集群部署方案:
3).docker对问题的解决
A.服务安装问题:容器初始化安全,简单,快捷。案例
B.资源占用问题:可以充分利用硬件资源,避免硬件资源浪费
C.服务扩展问题:服务集群化扩展简单,风险低。
2.容器
什么是容器:
- 容器定义:
容器是一种轻量级、可移植、自包含的软件打包技术;是应用程序可以在几乎任何地方以相同的方式运行。开发人员创建并测试好的容器,无需任何修改就可以在生产环境的系统(物理机、虚拟机、云主机)上运行。 - 容器特性
A. 打包技术:可以将任何软件和依赖打包进一个容器中。
B. 可移植:不需要修改就可以在所有平台上使用(前提是目标及其安装了docker engine)
C. 高效化:能够快速启动和迁移
D. 隔离性:资源、网络、库等都是隔离的,不会出现依赖问题。
E. 方便管理:提供了针对容器的run、start、stop等标准化操作,方便自动话和管理。
F. 分工明确:开发只注重业务开发,运维只注重基础的环境管理。
为什么使用容器
- 开发人员
创建一次运行环境,打包成容器(镜像)后就可以在任何地方运行了。 - 运维人员
只要配置好标准的running(部署了docker engine)环境,就可以运行开发人员开发的任何容器;这对运维人员来说工作变得一致,可重复,同时也意味着高效。
容器工作方式
- 参与容器工作的元素
Docker客户端:Docker Client
Docker服务器:Docker daemon
镜像文件仓库:Registry
Docker镜像:Image
Docker容器:Container - 各个元素之间的关系
镜像仓库负责保存开发人员打包好的镜像(image);
容器是根据镜像创建而来;
运维人员通过Docker Client发送命令给Docker Daemon来从镜像仓库中下载镜像,然后根据镜像创建和管理Docker container。 - Docker架构图
容器部署部署架构
- 部署架构
- 容器部署架构和虚拟机部署架构区别
A. 硬件资源充分利用;
B. 轻量化,快速启动和迁移
二、镜像
1.镜像和容器关系
容器是运行在服务器中的实际存在的实例,容器是根据镜像创建而来,镜像中定义了容器中所运行的有的软件和依赖。
2.镜像内部结构
基础镜像
- linux操作系统
Linux操作系统由内核空间和用户空间组成,各发行版版的操作系统(如Ubuntu/CentOS/Debian)都是用户空间不同,内核空间是一样的。
- Docker版操作系统镜像
A.Docker镜像分为基础镜像和其他镜像,其他镜像以基础镜像为基础扩展而来;
B.Docker基础镜像就是各种Linux发行版的Dockder镜像;
- 二者区别
A.Docker版镜像只有200多兆
B.正式发行版系统至少有1G
C. Docker基础镜像提供的是最小安装的Linux发行版(如/dev、/proc、/bin)
D. 其他发行版在此基础上还选装了很多软件、服务、图形化等工具。
镜像分层
- Docker分层结构
Docker支持通过扩展现有镜像,创建新的镜像(实际上Docker Hub中99%的镜像都是基于base镜像扩展而来),没安装一个软件,就在现有镜像之上叠加一层。
FROM debian
RUN apt-get install emacs
RUN apt-get install apache2
CMD ["/bin/bash"]
2. 分层优点:共享资源
镜像构建
镜像分发
三、容器
创建运行容器
容器操作:
启动、停止、和重启、pause、unpause、删除容器
容器状态
容器资源限制:
内存、CPU、IO
容器底层技术:cgroup和namespace
四、网络
单机:
网络类型:
none、host、bridge、user-defined
容器间通信:
IP通道、Docker DNS Server、joined容器
容器与外部通信:
容器访问外部,外部访问容器;
五、Docker存储
Data Volume
Data Volume 生命周期管理
其他:
stroage driver、数据共享、Volume container、Data-packed volume container
六、多主机管理
多主机安装、管理
多机网络:
overlay
libnetwork & CNM、macvlan、fiannel、weave、calico、
各种网络比较
七、容器监控
Docder自带监控
prometheus监控,
其他监控
八、日志管理
本文地址:https://blog.csdn.net/weixin_41909330/article/details/107458574
下一篇: 通用连接池帮你解决资源管理难题