[java] Docker
时间:2021-07-29
本文章向大家介绍[java] Docker,主要包括[java] Docker使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
概述
- 借鉴集装箱运输的思路
- 解决了同样代码,运行环境变化后无法运行的问题
- 一个容器包含了完整的运行时环境,除了应用程序本身之外,这个应用所需的全部依赖、类库、其他二进制文件、配置文件等,都统一被打入了一个称为容器镜像的包中
介绍
- 镜像:镜像是文件,是只读的,提供了运行程序完整的软硬件资源,是应用程序的"集装箱"
- 容器:是镜像的实例,由Docker负责创建,容器之间彼此隔离。彼此拥有自己的文件系统,容器的底层镜像都是一个linux系统
- 关系:用docker安装应用,就是在网上拉取一个已有镜像资源,然后自己的电脑上就有了这个镜像的容器
作用
- 简化配置:Docker的初始目的,虚拟机VM最大的好处是基于你的应用配置能够无缝运行在任何平台上。Docker提供同样类似VM的能力,但是没有任何副作用,它能让你将环境和配置放入代码然后部署,同样的Docker配置能够在各种环境中使用,这实际是将应用环境和底层环境实现了解耦
- 代码管道化管理:能够对代码以流式pipeline管道化进行管理,从开发者的机器到生产环境机器这个流程中都能有效管理。因为在这个流程中会有各种不同的环境,每个都可能有微小的区别,Docker提供了跨越这些异构环境以一致性的微环境,从开发到部署实现流畅发布
- 开发人员的生产化:在一个开发环境,我们希望我们的开发环境能更加接近于生产环境,我们会让每个服务运行在自己的VM中,这样能模拟生产环境,比如有时我们并不总是需要跨越网络连接,这样我们可以将多个Docker装载一系列服务运行在单机上最大程度模拟生产分布式部署的环境
- 应用隔离:有很多理由你需要在一台机器上运行多个应用,这就需要将原来铁板一块monolithic的应用切分为很多微服务。实现应用之间的解耦,将多个应用服务部署在多个Docker中能轻松达到这个目的
- 服务合并:使用Docker也能合并多个服务以降低费用,不多的操作系统内存占用,跨实例共享多个空闲的内存,这些技术Docker能以更加紧密资源提供更有效的服务合并
- 多租户:Docker能够作为云计算的多租户容器,使用Docker能容易为每个租户创建运行应该多个实例,这得益其灵活的快速环境以及有效diff命令
- 快速部署:Docker通过创建流程的容器,不必重新启动操作系统,几秒内能关闭,你可以在数据中心创建或销毁资源,不用担心额外消耗。典型的数据中心利用率是30%,通过更积极的资源分配,以低成本方式对一个新的实例实现一个更聚合的资源分配,我们很容易超过这个利用率,大大提高数据中心的利用效率
命令
- 启动:systemctl start docker
- 查询当前容器:docker container ls -all
- 删除当前容器:docker container rm mycentos
- 查询所有运行的容器:docker ps
- 删除特定容器:docker rm [container ID]
- 停止运行容器:docker stop [name]
- 重启容器:docker restart [container ID]
参考
docker安装
https://www.cnblogs.com/myzony/p/9071210.html
https://www.runoob.com/docker/docker-install-mysql.html
mysql
https://www.cnblogs.com/sablier/p/11605606.html
https://blog.csdn.net/weixin_40461281/article/details/92610876
https://segmentfault.com/a/1190000037512741
要不要把mysql部署到docker
https://blog.csdn.net/u012562943/article/details/78983020
https://blog.csdn.net/mingongge/article/details/107872989
CentOS 8 错误
https://blog.csdn.net/qq_36643282/article/details/105190759
dolphinscheduler
https://hub.docker.com/r/minimy/dolphinscheduler
原文地址:https://www.cnblogs.com/cxc1357/p/13838372.html
- HDU 2438 Turn the corner(三分查找)
- UVAlive 3708 Graveyard(最优化问题)
- HDU 1754 I Hate It(线段树之单点更新,区间最值)
- Selenium2+python自动化19-单选和复选框
- Uva 11300 Spreading the Wealth(递推,中位数)
- Uva 11729 Commando War (简单贪心)
- UVA 11292 Dragon of Loowater(简单贪心)
- Codeforces Beta Round #2 A,B,C
- 牛顿迭代法(Newton's Method)
- 最长递减子序列(nlogn)(个人模版)
- Selenium2+python自动化26-js处理内嵌div滚动条
- Selenium2+python自动化25-js处理日历控件
- 转负二进制(个人模版)
- Selenium2+python自动化24-js处理富文本
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法