Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >「走进k8s」Docker 简介和安装(一)

「走进k8s」Docker 简介和安装(一)

作者头像
IT架构圈
发布于 2019-07-30 06:04:40
发布于 2019-07-30 06:04:40
4.3K00
代码可运行
举报
文章被收录于专栏:IT架构圈IT架构圈
运行总次数:0
代码可运行

关于docker这块从0开始已经写了4个系列了,但是针对k8s还是有点怵,因为k8s确实比较麻烦里面的东西比较复杂,而且针对k8s想走的更远还是需要实践,前端时间将原来的java的一些知识回顾和学习了,这次又要开启k8s之旅了,加油吧老铁们!还是继续从docker开始,不断的反复,不断的学习,才能让知识记忆的更老。艾宾浩斯记忆法就是这样说的。

(一)什么是docker

Docker的英文翻译是【码头工人】的意思,不是咱们初中还是高中学的课文的【伏尔加河上的纤夫】,负责搬运码头货物的,随着科技的发展码头上体力搬运工越来越少,多数是操作码头集装箱的码头工人。对于集装箱是一种容器,直接理解成弥勒佛的布口袋什么都可以放。杯子可以存水,笔筒可以放笔,酒瓶可以盛酒,书包可以装书,相机可以存照片,电脑可以放小电影。

  1. 不同的应用程序可能会有不同的应用环境,比如.net开发的网站和java开发的网站依赖的软件就不一样,如果把他们依赖的软件都安装在一个服务器上就要调试很久,而且很麻烦,还会造成一些冲突。比如IIS和tomcat访问端口冲突。这个时候你就要隔离.net开发的网站和tomcat开发的网站。常规来讲,我们可以在服务器上创建不同的虚拟机在不同的虚拟机上放置不同的应用,但是虚拟机开销比较高。docker可以实现虚拟机隔离应用环境的功能,并且开销比虚拟机小,小就意味着省钱了。
  2. 你开发软件的时候用的是Ubuntu,但是运维管理的都是centos,运维在把你的软件从开发环境转移到生产环境的时候就会遇到一些Ubuntu转centos的问题,比如:有个特殊版本的数据库,只有Ubuntu支持,centos不支持,在转移的过程当中运维就得想办法解决这样的问题。这时候要是有docker你就可以把开发环境直接封装转移给运维,运维直接部署你给他的docker就可以了。而且部署速度快。
  3. 在服务器负载方面,如果你单独开一个虚拟机,那么虚拟机会占用空闲内存的,docker部署的话,这些内存就会利用起来。
(二)docker格言

Java号称【一次编译,到处运行】,因为java虚拟机解决平台的兼容性问题,所以有java虚拟机的地方就能跑java代码;Docker是:【一次封装,到处运行】,因为docker决绝了应用环境的问题,安装了docker的平台就能跑【docker包】,这样就决绝了【开发环境能跑,一上线就崩】的尴尬。

(三)docker和虚拟机的区别

vm与docker框架,直观上来讲vm多了一层guest OS,同时Hypervisor会对硬件资源进行虚拟化,docker直接使用硬件资源,所以资源利用率相对docker低也是比较容易理解的。

  1. 隔断这招就是虚拟机(VM)的思路了,虚拟机的这种隔断你可以理解成比较决绝的隔断,墙上自己掏洞开个门开个窗,厨房卫生间我在自己的这个隔断里都单独来一套,基本就是一个完整的家装工程了,你进这个隔断感觉——喔,这就是个完整的房子嘛。所以虚拟机的好处坏处也你也就明白了:隔离效果好,但是损耗大。
  2. docker,不仅能做资源隔离,人家还规范化系统化了(repo/image),所有房间(container)统一装修和家具,你交钱签约就能享受一个相对独立的生活环境(environment)了,你自己的东西在你屋子里随便摆,都可以的;对中介来说,你当下不过就是个正在running的instance,的当你gameover了以后,这个房间他还可以以很小的代价租给别人run,是不是效率好高了?
(四)为啥要用容器

随着硬件的性能提升,以及软件种类的丰富,有两种情况变得很常见

  1. 硬件性能过剩——很多计算机的硬件配置,即使不能完全满足峰值性能的要求,也往往会有大量时间处于硬件资源闲置的状态。例如一般家用电脑,已经是四核、六核的配置了,除了3A游戏、视频制作、3D渲染、高性能计算等特殊应用外,通常有90%以上时间CPU是闲置的。
  2. 软件冲突——因为业务需要,两个或者多个软件之间冲突,或者需要同一个软件的不同版本。例如早几年做web前端的,要测试网页在不同版本的IE上是否能正常显示,然而Windows只能装一个版本的IE。
  3. 开发环境能跑,一上线就崩。环境不一致。
(五)Docker Engine
  1. 常驻后台进程Dockerd
  2. 一个用来和 Dockerd 交互的 REST API Server
  3. 命令行CLI接口,通过和 REST API 进行交互(我们经常使用的 docker 命令)
(六)Docker 架构
  1. container: 容器,是指image的运行时,包含了文件资源(image展开)和系统资源(变成process存在于系统中)。
  2. image: 镜像,是指将应用打包好之后的存储方式,一个image包含多层layer。
  3. layer: 在Dockerfile中每一步都会产生一层layer,每一步的结果产出变成文件。
  4. dockerfile: 一种构建image的文件的DSL。
  5. docker: 可以通过Dockerfile构建image,也可以将image运行,使其变成container。
  6. moby: docker项目的新名字,docker公司的一步棋。
  7. docker-compose: Python写的一个docker编排工具。
  8. docker swarm: docker公司推出的容器调度平台。
  9. kubernetes: google主导的容器调度平台。
(七)Docker 安装

这里不在描述windows,mac了。只要说说如何快速简单的在centos系统上安装。

  • ①修改dns解析地址
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
vi /etc/resolv.conf
#nameserver 8.8.8.8

# 或者直接通过这个命令 echo nameserver 8.8.8.8 >> /etc/resolv.conf
systemctl restart network
  • ② docker在线安装
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo curl -sSL https://get.docker.com/ | sh
  • ③ docker 加速器
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://b81aace9.m.daocloud.io
sudo systemctl restart docker
  • ⑤ 安装配合工具
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo yum -y install epel-release
sudo yum -y install python-pip
sudo yum clean all
  • ⑤ 安装docker-compose
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo pip install docker-compose
  • ⑥ 安装完毕
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker-compose version
docker version

PS:docker已经安装成功了。之前写的文章太官方了,现在要让更通俗,很易懂的方式让更多人了解和使用docker。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-07-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 编程坑太多 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
javafx框架tornadofx实战-益智游戏-找出指定的内容1
找到它.gif 布局与上一个案例舒尔特基本相似,来体验一下吧,代码也在同小异,直接上代码: 重要的事情说3遍: 动手敲代码!!!动手敲代码!!!动手敲代码!!! class MainAPP : App(MainView::class) class MainView : View("把指定的图片全都给我找出来") { private val c by inject<MainController>() lateinit var r: GridPane private val sue
用户6167008
2020/08/11
7670
javafx框架tornadofx实战-益智游戏-找出指定的内容1
javafx框架tornadofx实战-舒尔特5-增加字体大小设置和进度显示功能
标签文本绑定到两个属性变量resultSize(结果长度)和correctSize(总长度)
用户6167008
2020/06/11
9670
javafx框架tornadofx实战-舒尔特5-增加字体大小设置和进度显示功能
javafx框架tornadofx实战-舒尔特6-增加导出舒尔特方格功能
本节需要导入以下3个类: import javafx.embed.swing.SwingFXUtils import javafx.scene.SnapshotParameters import ja
用户6167008
2020/06/15
9640
javafx框架tornadofx实战-舒尔特6-增加导出舒尔特方格功能
javafx框架tornadofx实战-舒尔特1
set舒尔特.gif import javafx.animation.AnimationTimer import javafx.application.Platform import javafx.geometry.Orientation import javafx.geometry.Pos import javafx.scene.control.RadioButton import javafx.scene.layout.GridPane import javafx.scene.layout.Prior
用户6167008
2020/06/05
8121
javafx框架tornadofx实战-舒尔特1
使用javafx框架tornadofx制作诗经查看工具
为了让各位都动起手来一起学习,以后的博客中贴一半代码,另一半代码以图片形式显示。用到的json数据
用户6167008
2019/12/02
6590
使用javafx框架tornadofx制作诗经查看工具
javafx框架tornadofx实战-舒尔特4-左侧列表数据构建函数变更
由于改成从外部json文件加载数据到左侧列表,相应的构建函数变更如下: private fun initContent(title: String) { content.value = "" isDIY.value = title == "自定义" when (title) { "数字" -> { (1..nproperty.value * nproperty.value).map {//用英文逗号分隔每个数字
用户6167008
2020/06/10
3880
一颗心到一个圆的演变,javafx框架tornadofx动画演示
[or8lllfpxg.gif] import javafx.animation.AnimationTimer import javafx.application.Application import javafx.application.Platform import javafx.geometry.Pos import javafx.scene.canvas.GraphicsContext import javafx.scene.control.RadioButton import javafx.sce
用户6167008
2019/09/04
8210
一颗心到一个圆的演变,javafx框架tornadofx动画演示
javafx框架tornadofx画个心形
[zyv5mi8xkw.gif] import javafx.animation.AnimationTimer import javafx.application.Application import javafx.application.Platform import javafx.geometry.Pos import javafx.scene.canvas.GraphicsContext import javafx.scene.control.RadioButton import javafx.sce
用户6167008
2019/09/03
1.5K0
javafx框架tornadofx画个心形
吃鱼小游戏,可以让小朋友练习键盘方向键和鼠标,采用javafx框架tornadofx实现
[ts8aa4beeu.gif] import javafx.application.Application import javafx.stage.Stage import javafx.scene.paint.Color import javafx.scene.text.Font import javafx.scene.text.FontWeight import javafx.animation.AnimationTimer import javafx.beans.Observable import
用户6167008
2019/09/04
1.1K0
吃鱼小游戏,可以让小朋友练习键盘方向键和鼠标,采用javafx框架tornadofx实现
一颗心到一个圆的演变,javafx框架tornadofx动画演示
采用runAsync和Thread.sleep(10)实现动画效果 import javafx.geometry.Pos import javafx.scene.canvas.GraphicsContext import javafx.scene.control.RadioButton import javafx.scene.paint.Color import javafx.scene.text.FontWeight import tornadofx.* import java.util.* import
用户6167008
2019/09/16
6970
用javafx框架tornadofx做了个天气预报的程序
此实例用到了rest api,tableview,listview,linechart、ItemViewModel等知识,演示了动态加载数据的方法.
用户6167008
2019/10/16
2.1K1
用javafx框架tornadofx做了个天气预报的程序
来玩玩打地鼠游戏,300行代码不到
所用到的图片: 打地鼠.zip [mzijcqa487.gif] a2.gif 图1代码: import javafx.animation.KeyFrame import javafx.animation.Timeline import javafx.event.ActionEvent import javafx.event.EventHandler import javafx.geometry.Pos import javafx.scene.effect.DropShadow import javaf
用户6167008
2019/09/26
2K0
来玩玩打地鼠游戏,300行代码不到
javafx框架tornadofx入门30_类型安全的样式-使用样式类
style-class.gif image.png class MyStyle : Stylesheet() { companion object { val leftBox by cssclass()// View中通过 addClass(MyStyle.leftBox) 使用此样式 val labelOne by cssid()// View中id为"label-one"的控件使用此样式 val two by cssclass()// View
用户6167008
2020/05/07
8780
javafx框架tornadofx入门30_类型安全的样式-使用样式类
javafx框架tornadofx入门26_treeview_增加删除修改
treeview-add-delete-modify.gif 在上一篇的基础上,为treeview添加“增加删除修改”的功能,其中数据类Company,Department,Staff的代码在在上一篇中 import javafx.scene.control.TreeItem import javafx.scene.control.TreeView import javafx.scene.layout.Priority import tornadofx.* class MainView26 : View
用户6167008
2020/04/20
8160
javafx框架tornadofx入门26_treeview_增加删除修改
javafx框架tornadofx入门实战22_treeview
通过treeview构建文件(夹)树,就像windows文件管理器左侧的一样 treeview.gif import javafx.collections.FXCollections import javafx.collections.ObservableList import javafx.scene.control.TreeItem import javafx.scene.layout.Priority import tornadofx.* import java.io.File import ja
用户6167008
2020/03/25
8340
javafx框架tornadofx入门实战22_treeview
300行代码不到的javafx框架tornadofx拼图游戏
不知道为什么分成9份的时候无法移动,请高手指教 分成36份的时候程序有可能卡住没反应 分成4份的时候有可能无法成功恢复原图 a2.gif heart2circle.zip 附件运行方式:解压后,双击文件:run.bat import javafx.application.Application import javafx.application.Platform import javafx.beans.property.SimpleObjectProperty import javafx.geome
用户6167008
2019/09/05
1.5K0
ElasticSearch 工具类封装(基于ElasticsearchTemplate)
1.抽象接口定义 1 public abstract class SearchQueryEngine<T> { 2 3 @Autowired 4 protected ElasticsearchTemplate elasticsearchTemplate; 5 6 public abstract int saveOrUpdate(List<T> list); 7 8 public abstract <R> List<R> aggregati
肖哥哥
2019/01/28
6.8K0
现代 Java 实现数字华容道石头迷阵游戏的项目实战教程与项目实战技巧
以下是按照最新技术要求,为Java项目实战-数字华容道/石头迷阵游戏编写的实操内容。文章将结合Java 17+的特性及现代GUI开发理念,提供完整的实现方案。
啦啦啦191
2025/08/01
900
现代 Java 实现数字华容道石头迷阵游戏的项目实战教程与项目实战技巧
javafx框架tornadofx实战-舒尔特8-增加统计功能
重要的事情说3遍: 动手敲代码!!!动手敲代码!!!动手敲代码!!! shuerte3.gif 新建StatisticView.kt文件,并添加到主视图的right drawer中: import javafx.scene.chart.* import tornadofx.* class StatisticView : View("统计") { private val c by inject<MainController>()//注入控制器 private var bc by singleA
用户6167008
2020/06/28
5831
javafx框架tornadofx实战-舒尔特8-增加统计功能
二维码生成小工具,采用javafx框架tornadofx实现界面开发
[3zqf7zy13o.gif] import javafx.application.Application import javafx.beans.property.SimpleObjectProperty import javafx.embed.swing.SwingFXUtils import javafx.scene.image.Image import javafx.scene.image.WritableImage import tornadofx.* import javax.imageio.
用户6167008
2019/09/11
1.5K0
二维码生成小工具,采用javafx框架tornadofx实现界面开发
推荐阅读
相关推荐
javafx框架tornadofx实战-益智游戏-找出指定的内容1
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验