SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
Docker
我们发现在微服务中有一个令人头疼的问题——部署用Docker去解决这个部署难题
一初识Docker-什么是docker
1、项目部署的问题
2、Docker
扔到一台机器上它们的依赖难道没有干扰吗不会docker将打包好的程序放到一个隔离容器去运行使用沙箱机制避免互相干扰之间不可见这样就解决了混乱依赖的问题
但仅限于同一个操作系统比如centos和ubuntu
那么一个ubuntu上的应用为什么不能在centos上运行呢
那针对这个问题docker干了什么事呢
这样docker就解决了跨系统问题。你可以认为docker打包好的程序包可以运行在任何一个linux内核的操作系统
3、总结
二初识Docker-Docker和虚拟机的差别
1、Docker与虚拟机
上节课我们已经学习了Docker的原理我们知道Dokcer可以实现一个应用在不同的linux操作系统上去运行和部署
而我们虚拟机也可以达到类似的效果
它们的实现有什么差别呢
虚拟机是在一个系统中装了另外的一个系统所以当应用执行时它会以为自己在一台真实的电脑上因此它会先去调用这个内置的操作系统而它再与我们Hypervisor进行交互再把信息传递给了我们外部操作系统外部操作系统再去调用计算机硬件于是我们的应用执行就完成了。但由于经过了层层传递因此它的性能相对来讲要差一些
Docker就不同了我们知道Docker它的应用在执行时是直接调用操作系统内核的所以它的执行性能是会比虚拟机性能要好很多的
2、总结
docker是一个系统进程因为直接与操作系统内核进行交互
三初识Docker-Docker架构
1、镜像和容器
镜像就是硬盘中的文件
镜像都是只读的也就是说容器运行过程中不能往镜像中写东西。可以基于镜像创建容器容器可以从中读数据但不能写数据。
那么将来mysql容器往哪里写数据data呢只要拷贝一份文件到自己的独立文件系统中这就是隔离的一个特性。这样在自己的空间里写不会对别的容器产生影响也不会对镜像产生影响。包括将来记日志logs也是如此
只有这样我们的镜像才能放心大胆的交给别人去使用因为这样镜像不会被干扰也不会被影响
那么Docker如何共享给别人去使用呢
2、Docker和DockerHub
那么我们该如何利用Docker完成镜像构建或者是从远端拉取镜像呢又该如何去运行容器呢这就需要了解Docker的架构了
3、docker架构
客户端如果就在本地来发用“命令”就可以了如果将来是远程操作docker就用restapi发
比如我们这里就是本地发docker builddocker pulldocker run
一般nginx、mysql这种建议直接从官方拉取只有一些我们自己的微服务或者自己需要去做一些深度定制才需要构建
因此我们一般使用docker主要就是向docker server发命令得到镜像
4、总结
四初识Docker-Docker的安装
1、安装docker
macos m1上安装Docker直接在官网或者homebrew下载即可然后在偏好配置中更换国内镜像源
五使用Docker-镜像命令
1、镜像相关命令
2、镜像操作命令
docker images --help
3、从DockerHub中拉取一个nginx镜像并查看
docker pull nginx
4、利用docker save将nginx镜像导出磁盘然后再通过load加载回来
这个nginx.tar文件不存在将来它会自动创建
以上说明我们导出成功了
那接下来我们还要演示导入
首先把本地的这个镜像删除
然后通过docker images查看发现已经没有了
接下来我们通过load来加载这个nginx.tar文件
5、总结
七使用Docker-容器命令介绍
1、容器相关命令
怎么样基于镜像去创建容器完成容器的各种操作
docker run 不仅可以创建容器而且还可以让容器处于运行状态
八使用Docker-容器命令案例1
1、案例创建运行一个Nginx容器
端口映射的作用把本来给外界完全隔离开来的容器开一个小窗口让你透过它来访问
容器端口往往取决于这个应用本身一般不会变像这个nginx一般都是80。可变的是宿主机端口
如果想访问容器应该访问容器所在的那台服务器
查看本机ip地址ifconfig
找到 en0
后如果是iPv4就找 inet
run后返回的一长串字符串就是容器的id全局唯一起到标识的作用
-f 持续跟踪日志
ctrl+c停止输出日志
2、总结
九使用Docker-容器命令案例2
1、案例进入Nginx容器修改HTML文件内容添加“传智教育欢迎您“
那么如何进入到容器内部修改文件呢
容器的内部其实有一套自己的文件系统
它看起来好像跟linux系统的目录一样但其实它是一个阉割版
我们现在要找nginx在哪个目录dockerhub上找
index.html就是我们要修改的首页了
vi不成功镜像封装时只是应用程序所需要的必备的函数库
那么我们如何修改文件呢
utf-8来支持中文
通过 exit
从容器中退出然后停掉这个容器 docker stop mn
注意 docker ps
默认只能查看运行容器
这就是为什么我们ps没有看到这个挂掉了的容器的原因除非我们加上 -a
如果我们想再启动docker start mn
然后再删除这个容器
2、总结
十一使用Docker-数据卷命令
1、数据卷
docker容器中所有的数据、文件都是和容器耦合在一起的因此给我们带来很多问题
比方说我现在在这个容器的html目录里写了点东西那么这些东西会立即写到宿主机文件系统里而反过来如果说我在宿主机文件系统里对html文件夹中的某一个文件进行修改那么这种修改也立即会反映到容器内的这个目录里去
又创建了一个新的容器我希望它的配置能够共享过来怎么办呢我可以让新的这个容器的conf目录也来挂载conf数据卷也就是说两个容器可以挂在同一个卷上。这个时候原来在conf目录中做的一切修改这个新的容器也能看到
容器删了数据卷不会跟着删。将来再来一个新的容器只要接着挂载在这两个数据卷上就可以共享以前旧的数据
2、操作数据卷
3、案例创建一个数据卷并查看数据卷在宿主机的目录位置
4、总结
十二使用Docker-数据卷挂载案例1
十三使用Docker-数据卷挂载案例2
十四自定义镜像-镜像结构
十五自定义镜像-Dockerfile
十六DockerCompose-初始化Compose
十七DockerCompose-部署微服务集群
十八Docker镜像仓库
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |