Docker世界简明生存指南

Tips : 由于本篇是IT入门教程,非IT行业或对docker不敢兴趣的读者可以直接跳到最后一段.

在互联网或区块链世界里面,开发人员或是架构师必须要掌握的一个技能中,Docker一定是其中之一了.

01 Docker是什么?

1.1 Docker是一个工具类型的软件

Docker是可以运行linux,mac os,windows上的一个工具型软件,通常这个软件只有开发人员和运维人员使用.

1.2 Docker是一个容器

Docker是一个容器,就像是杯子一样,只不过杯子是用来装水的,笔筒是用来装笔的.Docker这个容器就是用来装任何的程序.并让这个程序在这个容器中运行起来.

02 Docker的设计思想

2cf5e0fe9925bc31137974de55df8db1cb13704b.jpg

Docker的Logo非常传神的表达了Docker的设计思想.Logo的主要组成元素就是鲸鱼和集装箱.

2.1 集装箱->容器思想

Docker的设计灵感来源于集装箱.

在没有集装箱之前,码头货物运输是非常杂乱的.有专门运输化学用品的船,也有专门运输水果的船.

但是当集装箱出现以后:

  1. 所有的集装箱大小相同:Docker的标准化
  2. 集装箱之间互不影响:Docker的隔离性,容器之间没有任何影响
  3. 不需要专门的水果船和化学用品船,全都放到不同的集装箱中:只需要将软件封装到对应的容器中

2.2 集装箱里面的货物->镜像文件

打包好的运行环境(即系统,例如linux操作系统)和基于运行环境开发的软件生成的文件叫镜像(image).

类似我们装windows系统使用过的GHO、ISO等系统镜像。

2.3 码头 -> 镜像仓库

码头是用来存储货物的地方,镜像仓库是存放镜像文件的地方,镜像仓库中有很多的镜像文件可以下载到我们的电脑上.

主要的镜像仓库有

  1. hub.docker.com 国外速度比较慢
  2. https://c.163yun.com/hub 国内163镜像中心

2.4 Docker使用流程

使用Docker软件去镜像中心下载对应的镜像,然后使用一条命令行,加载镜像文件,得到一个容器,我们可以将自己的软件部署或是安装到容器中去,让软件运行起来.

03 Docker解决了什么问题

3.1. 我本地运行没有问题啊?

这是开发人员和测试人员常有的矛盾,这种问题通常就是因为环境不一致导致的,Docker的环境标准化有效解决了运行环境不一致的问题.

3.2. 系统好卡,哪个哥们又写死循环了?

同一个linux系统有不同的开发测试人员去部署软件,导致其他人的软件可能会严重影响系统资源.Docker启动的时候已经限制了CPU和内存使用资源.做到大家的程序进行隔离.

3.3. 双11来了,服务器撑不住了

通过Docker迅速克隆n台服务器,Docker的标准化让程序的迅速扩展.弹性伸缩变得简单.

3.4. (开发人员)本机搭建分布式或集群应用

windows系统本机开发分布式应用通常会在本机启动多个虚拟机,这样造成的结果是大量占用内存资源.docker的轻量级容器思路可以非常好的解决本机搭建分布式和集群应用.

04 5秒钟搭建一个数据库

4.1 安装

Docker通常在linux上进行安装,这篇教程展示的是windows环境下的Docker安装.

首先去官网下载安装软件:

https://store.docker.com/editions/community/docker-ce-desktop-windows

21.png

由于我的是windows 10 家庭和学生版,所以我只能安装Toolbox版本

22.png

4.2 安装中遇到的坑

安装过程中,无脑点下一步就可以了,但是在安装的过程中还是有很多坑:

  1. Toolbox版本其实是模拟了一个linux环境,最后启动了安装目录中的start.sh脚本,里面需要读取环境变量,如果不配置相应系统环境变量就会报错
23.png
24.png
25.png
26.png
  1. 启动桌面的Docker Quickstart Terminal快捷方式后,会发现程序一直去github下载一个 boot2docker.iso文件,由于国内的原因是比较慢的.可以去https://pan.baidu.com/s/1qYyc0ag直接下载后放入对应的文件中后再启动
27.png
28.png

4.3 启动 + 搭建数据库

接下来Docker就可以正常启动了,同时需要查看的docker-machine的运行环境,对应IP地址在后面端口映射的时候可以使用到.

29.png

docker search [关键字] 用来去中央镜像仓库查询镜像,方括号表示可选内容

30.png

通常来说,不包含\的就是官方镜像,同时也可以观察STARS来判断镜像的热度.

docker pull [OPTIONS] NAME[:TAG] : 用来拉取镜像到本机,格式是镜像名:版本号,

31.png

docker images [OPTIONS] [REPOSITORY[:TAG]] 查看本机有哪些镜像文件

32.png

接下来是通过docker加载镜像文件启动一个容器运行mysql数据库,命令行如下:
docker run -p 8888:3306 --name helloworldlyric -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6

  1. 其中-d表示后台运行
  2. -p 8888:3306 表示容器中的3306端口映射到docker machine的8888端口中
  3. -e MYSQL_ROOT_PASSWORD=123456 表示初始化密码
  4. --name helloworldlyric 是为自己的这个容器去一个名字
33.png

返回了一个Hash值,这个hash值是这个容器运行的ID,是一个唯一标示.

docker ps : 用来查看目前哪些容器正在运行

34.png

接下来就是连接数据库了,IP注意要使用之前docker-machine env中的IP地址,端口号为8888,用户名为root,密码为123456,经过测试可以连接成功.

35.png

docker stop [容器ID] : 最后是停止容器,容器ID支持模糊查询

36.png

05 使用总结

通过这次体验,Docker是使用思路也很清晰了.

  1. 对于开发人员,可以去镜像中心下载各种组件帮助自己本机快速搭建开发环境,同时避免污染本地系统(数据库安装后通常很难删干净,导致再次重装总是无法成功).

  2. 对于运维人员,可以将自己需要发布的软件镜像化,然后快速的在不同的机器上进行部署.

06 从Docker中学到了什么

追求发展一个系统而不是实现具体的一个目标

Docker使用的虚拟化和容器技术很早之前就已经出现了.但是Docker通过这些技术发展出了一个生态系统(docker镜像,docker容器,镜像仓库).

加上了由于虚拟化应用和云计算的流行,给Docker技术的火热创造了必要条件。如果Docker只是向之前一样追求实现一个具体目标或是功能,自然就无法有今天的成就.

所谓的'系统',是一个可以连续变化的东西,它可以是一项技能或是一段关系,通过这个系统,你可以实现你的各种目标,你关心的的并不是在某件事情上的成败.而是从成败中不断调整来优化自己的系统.

当我们换工作时,每个公司的具体业务是不一样的,工作具体内容也是不一样的,当进入了一家公司以后,如何更快的适应新公司的工作和业务,依赖的就是过去工作中积累的具体技能或是经验.这些技能和经验就是我们的系统的组成部分.

平时在工作生活中也经常犯以偏概全的错误,总是在一些小事上不断的纠结,写作的时候总是关注,今天的这一篇又没有写好.或是在写程序的时候只考虑了具体业务,没有想到代码的复用性.把注意力完全放错了地方.

而把具体目标放到一个系统的框架中去实现,会得到一个更高的视角去看问题,关注的是未来优化后的系统能实现其他的什么目标.是一种从'活在当下'到'活在未来'的转变.

表现型人格的人通常非常在意目标的实现,因为从中可以获得一种奖赏,比如会因为自己某次考试得到高分而沾沾自喜;而成长型人格更多的关注自己的成长,而不是因为实现目标得到的奖励.

具体的目标实现也很重要,但是更好的策略是把注意力更多的放到自己的成长上,发展出一个属于自己的'系统',从而更好的面对不确定性的未来.

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,907评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,987评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,298评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,586评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,633评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,488评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,275评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,176评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,619评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,819评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,932评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,655评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,265评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,871评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,994评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,095评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,884评论 2 354

推荐阅读更多精彩内容