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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【 全干货 】5 分钟带你看懂 Docker !
织云平台团队
2017/11/01
3.6K3
【 全干货 】5 分钟带你看懂 Docker !
这就是你日日夜夜想要的docker!!!---------三分钟带你了解什么是docker?
Docker的思想来自于 集装箱,集装箱解决了什么问题?在一艘大船上,可以把货物规整的摆放起来。并且各种各样的货物被集装箱标准化了,集装箱和集装箱之间不会互相影响。那么我就不需要专门运送水果的船和专门运送化学品的船了。只要这些货物在集装箱里封装的好好的,那我就可以用一艘大船把他们都运走。
不吃小白菜
2020/09/22
5420
这就是你日日夜夜想要的docker!!!---------三分钟带你了解什么是docker?
别再喊"在我电脑上能运行"!Docker集装箱如何终结环境噩梦
还记得那个周五的下午吗?整个团队围着测试服务器上那个诡异的bug抓耳挠腮。开发小张拍着胸脯说:"不可能啊,在我电脑上运行得好好的!"产品经理抱着笔记本在旁边急得转圈,客户等着下周演示的版本已经拖了三次。
AI大眼萌
2025/07/16
4150
别再喊"在我电脑上能运行"!Docker集装箱如何终结环境噩梦
Docker简介
docker(百度翻译为码头工人), 是一个开源的应用容器引擎,基于 Go 语言并遵从 Apache2.0 协议开源。官网 GITHUB
李小白是一只喵
2022/05/13
3890
Docker简介
BI系统打包Docker镜像及部署的技术难度和实现
随着容器化技术盛行,Docker在前端领域也有着越来越广泛的应用;传统的前端部署方式需要我们将项目打包生成一系列的静态文件,然后上传到服务器,配置nginx文件;如果我们使用容器化部署,将部署操作都命令化,集中成一个脚本就可以完成原来复杂的部署过程。本文就来介绍BI系统如何通过Docker方式进行部署。
葡萄城控件
2022/11/14
7380
BI系统打包Docker镜像及部署的技术难度和实现
[入门]容器
在上个世纪50年代前,当时物流远没有现代这么普及,集装箱在当时并不被认可,几乎所有货物都是通过零散方式运输。
木禾wen
2019/11/15
8780
[入门]容器
【k8s学习笔记一】容器及Docker基础
在该OS上再运行应用进程;而容器的应用进程直接运行在宿主的内核,没有自己的内核,也没有硬件虚拟,比传统虚拟机更轻便。
fankhu
2021/08/06
1.1K0
Docker是什么,有什么用?
Docker是一个基于轻量级虚拟化技术的容器,整个项目基于Go语言开发,并采用了Apache 2.0协议。Docker可以将我们的应用程序打包封装到一个容器中,该容器包含了应用程序的代码、运行环境、依赖库、配置文件等必需的资源,通过容器就可以实现方便快速并且与平台解耦的自动化部署方式,无论你部署时的环境如何,容器中的应用程序都会运行在同一种环境下。
后端码匠
2019/09/02
18.6K0
Docker是什么,有什么用?
从docker介绍及其简介
Docker 是一个开源项目,诞生于 2013 年初,最初是dotCloud 公司内部的一个业余项目。它基于 Google 公 司推出的 Go 语言实现。2013年3月,dotCloud公司的创始人之一,Docker之父,28岁的Solomon Hykes正式决定,将Docker项目开源。
贾维斯Echo
2023/10/18
5510
从docker介绍及其简介
容器技术-Docker的优点
当产品运行在内部的虚拟化平台中,如openstack,也就是KVM虚拟化,创建虚拟机,但是不断增加的云端应用,增加了对硬件资源的消耗,不断的创建虚拟机,消耗了大量的硬件资源。
NeilNiu
2023/02/25
1.2K0
docker和k8s预研
软件开发最大的麻烦事之一,就是环境配置。用户计算机的环境都不相同,你怎么知道自家的软件,能在那些机器跑起来?
潜行前行
2020/12/11
1.1K0
docker和k8s预研
什么是 Docker ?
关于 Docker 是什么,有个著名的隐喻:集装箱。但是它却起了个“码头工人”(docker 的英文翻译)的名字。 这无疑给使用者很多暗示:“快来用吧!用了 Docker,就像世界出现了集装箱,这样
邹立巍
2017/05/31
20K7
10分钟快速掌握Docker必备基础知识
Docker是时下热门的容器技术,相信作为一名开发人员,你一定听说过或者使用过,很多人会把Docker理解为一个轻量级虚拟机,但其实Docker与虚拟机(VM)是两种不同的计算机虚拟化技术,也有很多人会觉得,有了虚拟机,那为什么还要使用Docker呢?
macrozheng
2019/09/17
1.1K0
3分钟快速理解什么是Docker容器
在容器技术没有出来之前,开发运维在进行交付的时候经常出现,开发环境执行正常,生产环境部署运行出现问题,很多原因就是因为环境导致。还有部署环境太过于复杂,交付成本太高。容器技术的出现就像工业的集装箱技术,大大提高了交付效率。
Java团长
2019/05/16
8390
3分钟快速理解什么是Docker容器
docker 简介与安装
虚拟机(virtual machine)就是带环境安装的一种解决方案。 它可以在一种操作系统里面运行另一种操作系统,比如在Windows10系统里面运行Linux系统CentOS7。应用程序对此毫无感知,因为虚拟机看上去跟真实系统一模一样,而对于底层系统来说,虚拟机就是一个普通文件,不需要了就删掉,对其他部分毫无影响。这类虚拟机完美的运行了另一套系统,能够使应用程序,操作系统和硬件三者之间的逻辑不变。
cheese
2023/10/25
7370
docker 简介与安装
云原生系列:容器和Docker
技术的变革,一定是思想先行,云原生是一种构建和运行应用程序的方法,是一套技术体系和方法论。云原生(CloudNative)是一个组合词,Cloud+Native。Cloud表示应用程序位于云中,而不是传统的数据中心;Native表示应用程序从设计之初即考虑到云的环境,原生为云而设计,在云上以最佳姿势运行,充分利用和发挥云平台的弹性+分布式优势。叶秋学长理解的云原生就是用来降本增效的,如下图:
叶秋学长
2022/08/07
5.8K0
云原生系列:容器和Docker
【k8s 系列】docker回顾,k8s 起航
k8s 逐渐已经作为一个程序员不得不学的技术,尤其是做云原生的兄弟们,若你会,那么还是挺难的
阿兵云原生
2023/09/01
3430
【k8s 系列】docker回顾,k8s 起航
k8s和docker区别
k8s和 docker的区别是:docker是一种开放源码应用容器引擎,开发人员可以将其应用打包,发布到流行的 liunx系统或实现虚拟化。
wencheng
2022/08/25
2.5K0
k8s和docker区别
Docker 简介
1.什么是Docker Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux 机器上。使用Docker可以让每个应用彼此相
lpxxn
2018/01/31
1K0
Docker 简介
微服务架构实战:云服务环境与Docker部署工具
完成微服务的开发之后,必须为其提供-一个合 适的分布式环境进行最终的部署和发布,才能充分发挥微服务架构的优势。这个环境首先应该是安全可靠的,并且是可以进行任意扩展的分布式环境。其次,它的基础设施应该是配备齐全的,并且稳定可靠、可扩展。这些基础设施包括数据库管理系统、文件管理系统、消息服务系统等服务,以及自动化测试和持续交付等工具。
愿天堂没有BUG
2022/10/28
7740
微服务架构实战:云服务环境与Docker部署工具
相关推荐
【 全干货 】5 分钟带你看懂 Docker !
更多 >
交个朋友
加入架构与运维工作实战群
高并发系统设计 运维自动化实践
加入架构与运维趋势交流群
技术趋势前瞻 架构演进方向
加入[架构及运维] 腾讯云技术交流站
云架构设计 云运维最佳实践
换一批
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档