专栏首页编程坑太多「走进k8s」Docker 简介和安装(一)

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

关于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解析地址
vi /etc/resolv.conf
#nameserver 8.8.8.8

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

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

本文分享自微信公众号 - 编程坑太多(idig88),作者:诸葛阿明

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-07-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 『中级篇』在centos上安装docker(九)

    IT故事会
  • 『中级篇』Docker的收费模式(53)

    PS:从这次开始咱们就开始使用收费版本了,其实也是收费的试用版不用花钱的,就是了解下收费版的优越性,更好层次的了解docker。

    IT故事会
  • 跟我一起学docker(14)--docker swarm的使用

    IT故事会
  • Docker理论与实践(四)

    解析:docker run命令,-i是交互模式,-t是提供一个伪终端tty,--rm是在容器退出后自动移除容器。

    Tyan
  • Docker在centos上的安装与常用命令大全

    docker run hello-world(由于docker run 在发现本地没有存在对应的image的时候,有自动抓取image的功能,所以上面一步不是必...

    Peyshine
  • 测试必会 | Docker 核心命令技能

    attach; build; commit; cp; diff; export; images; exec;

    louiezhou001
  • 二进制安装k8s集群(3)-安装docker

    在上一篇文章里我们主要介绍制作ssl证书,这里我们主要介绍安装docker。这里我们采用yum的方式安装docker,安装完成之后开启tcp通讯并且开启双向ss...

    TA码字
  • 一、docker 入坑(win10和Ubuntu 安装)

    终究还是绕不过去了,要学的知识真的是太多了,好在我们还有时间,docker 之前只闻其声,不曾真正的接触过,现在docker 越来越火,很多公司也都开始使用了。...

    程序员爱酸奶
  • 使用docker完成生信分析环境搭建

    生信开发人员最头疼的问题,可能就是平台搭建和软件安装了。部署和迁移上要费很大力气。本文讲述使用docker制作一个镜像,后续通过导入自己定制的镜像,复制文件完成...

    SliverWorkspace
  • Docker入门之安装Docker

    本文操作基于CentOS7,其它Linux发行版本可能存在差异,分基于yum的在线安装和基于二进制包的离线安装(实际还有基于rpm包的离线安装),离线安装可以...

    一见

扫码关注云+社区

领取腾讯云代金券