写在前面的话

我们接下来的操作都是 CentOS 7.5 以下完成的,为了避免你我结果不一致,建议你也采用 CentOS 7.5,原因如下:

1. 个人几年工作下来经历的公司,包括身边的运维朋友,90% 以上都采用 CentOS 作为服务器的操作系统。

2. 说到 docker,很多人会想到 Ubuntu,但个人不建议使用 Ubuntu,Ubuntu 更适用于个人用户。

3. 老资料中会看到 docker 在 Ubuntu 的文件存储驱动 AUFS 相比 CentOS devicemapper 强出天际,但已经是过去式。

4. 老资料中会看到需要升级 CentOS 的系统才能支持新的文件存储驱动,这些也是过去式。

5. 从 18 年的某个版本开始,CentOS 已经默认使用新的文件存储驱动 Overlay2,性能比肩 AUFS,且不需要升级内核。

6. 告别 CentOS 6,除非你想给自己挖一个能埋掉自己的坑。

四座大山

在学习 docker 之前,我们必须要翻过这 4 座大山:容器(Container),镜像(Image),仓库(Repository),注册点(Registry

容器:上一篇花了大篇幅来说明它了。

镜像:包含系统和我们需要的服务的一个包,相当于 windows 的 iso 文件一样。

仓库:存放同种镜像资源的站点。

注册点:多个仓库再加上认证等功能集合在一起。

我们可以通过流程来理解:去注册点的指定仓库下载我们需要的镜像,然后在本地构建成为容器

docker 发展史

再开始讲故事之前,我们需要先明确一个概念:

docker 将容器技术推向了巅峰,但是容器并非起源于 docker,早期还有的 FreeBSD Jails,LXC 等

知道了这个,我们再来看看酱婶儿滴一个故事:

2013 年,docker 公司成立,产品一经发布便迅速占领了市场。但没人知道,Google 内部其实已经使用该技术长达了 10 年之久。

docker 就像一个愣头青,乱拳打死老师傅。此时谷歌再发布自己的产品显然已经来不及了。

但是,那可是谷歌,用了这个技术 10 年之久的谷歌。容器技术被你占了市场没关系,容器编排就别想了,于是 Kubernets,也就是 K8S,开源了,并迅速占领了超过 80% 的市场。

docker 肯定是心有不甘的,于是发布了自己的编排系统 docker swarm,并且整合进 docker 里面,只有你安装 docker,就自带。

然鹅,并没啥卵用,谷歌的 10 年,坑都被人家给踩平了,哪里是你一家年新公司能一朝一夕搞赢的。

之后更是联合了微软等几家巨头成立了 CNCF,一个业内制定容器相关规则规范的机构。

这就是 docker 诞生之后在业内横生的一些波澜,然后我们再看看其自身的改变:

docker 诞生之初,第一个执行环境是 LXC,后在 0.9 版本开始变更为 libcontainer

2015 年,runC 发布,从此  docker 走上了跨平台运行之路。

2016 年,拆分成为社区版(CE)和企业版(EE),并把流量引入了企业版,导致社区版炸锅。也是从这时开始,“一把好牌打得稀烂”~

在 1.13 版本之后,命名规则变更为 <年>.<月> 的格式,如 18.06,并发布前沿版本(Edge)和稳定版(Stable),前者 1 个月发布一次,后者3 个月。我们只需知道后者。

另外,在老的 CentOS 官方源中,docker 包名为 docker,Ubuntu 中为 docker.io,在超级远古的版本叫  lxc-docker,但 17.04 版本之后都统一为 docker-ce~

docker 安装

【1】卸载旧版,安装新版:

# 卸载旧版本
yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine

# 安装依赖
yum install -y yum-utils device-mapper-persistent-data lvm2 bridge-utils bash-completion wget

# 配置阿里 yum 源
cd /etc/yum.repos.d
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 安装 docker
yum -y install docker-ce

【2】启动并查看:

# 启动和开机自启动
systemctl start docker
systemctl enable docker

# 查看服务端和客户端版本信息
docker version 

# 查看更为详细的关于 docker 的信息
docker info

【3】简单的优化 docker:

我们在使用 docker info 的时候能够注意到两个参数,一个是 Docker Root Dir,另外一个是 Registry Mirrors,前者指的是 docker 的目录,后者则是我们拉取镜像的注册点。

前者修改不修改看个人,为了便于通用理解,我们这里就用当前的目录。后者必须修改,因为我们需要从这里加速拉取镜像,否则在国内访问 docker hub 的速度大家都懂的~

cd /etc/docker/
vim daemon.json

内容如下:

{
    "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}

在 docker 没有第一次启动的时候,/etc/docker 目录是不存在的,我们可以手动建立或者先启动 docker,daemon.json 则需要手动建立。这里我采用使用最简单的中科大加速器。当然,如果你想用阿里云或者其他的,可以去网上找找,很多~

这个文件就是一个 json 格式的数据,里面可以写各种 docker 的启动运行参数,具体可以参照官方文档或者网上,但值得注意的是,文档的参数一般是命令行参数,我们需要改为配置参数:

https://docs.docker.com/engine/reference/commandline/dockerd/

配置以后记得重启 docker 生效~

# 重启 docker
systemctl restart docker

# 查看修改的效果
docker info

在 docker info 显示的内容中,也可以看到我之前提到的文件存储驱动, Storage Driver: overlay2

另外提醒一个,强烈建议修改自己的本地虚拟机的 hostname 为不一样的,别使用默认的 localhost,否则后面可能会出现心态爆炸的 BUG~

当然这里的配置也可以以参数的形式添加到 /etc/systemd/system/multi-user.target.wants/docker.service 文件的指定位置,这里就不赘述,总之我推荐是写文件~

小结

到这里,docker 算是简单的安装完成了,但是怎么使用,到底有多牛逼,还得看后面。当然,如果你觉得写的还不错,可以先点个 推荐~

【02】循序渐进学 docker:如何安装的更多相关文章

  1. 【01】循序渐进学 docker:到底是啥

    写在前面的话 首先说一下,我本身是做运维的,4 年工作,多家公司.所以可能接下来谈到的更多的是一些在工作过程中积累的个人看法.且有些并不具备普遍性,有不合适的地方,全当我在吹牛逼就行. 一开始我们得谈 ...

  2. 【2】循序渐进学 Zabbix:安装配置 Zabbix Server 服务端

    上一篇 [1]循序渐进学 Zabbix :初识与基础依赖环境搭建( LNMP ) 安装 Zabbix Server 上篇我们在 192.168.200.101 上面安装了 Zabbix 所依赖的 LN ...

  3. 【09】循序渐进学 docker:docker swarm

    写在前面的话 至此,docker 的基础知识已经了解的差不多了,接下来就来谈谈对于 docker 容器,我们如何来管理它. docker swarm 在学习 docker swarm 之前,得先知道容 ...

  4. 【08】循序渐进学 docker:docker compose

    写在前面的话 在之前的操作中,即使是单个容器每次都需要敲很长的命令,当需要多个容器组合着用的时候更加麻烦,此时我们急需找到一种一次配置,随便运行的方法. 这就是这一节重点,单机容器编排工具:docke ...

  5. 【07】循序渐进学 docker:数据持久化

    写在前面的话 学到这里相信有心的朋友都发现问题了,我们每次都会去删掉容器,在创建新的容器.那数据怎么办?岂不删库跑路了? 就算不是数据库,假设公司有日志保留的需求,那每一次发布岂不日志都被干掉了? D ...

  6. 【06】循序渐进学 docker:跨主机通信

    写在前面的话 目前解决容器跨主机通信的方案有很多种,这里给出的只是其中的一种,而且还不是最好的方案,不过归根结底,大同小异.在学习 docker swarm 之前,大家可以先看看这种. 啥是 over ...

  7. 【05】循序渐进学 docker:系统资源和网络

    写在前面的话 在上一篇学习 Dockerfile 的时候其实还有几个相当重要得关键中没有谈到,但没关系,在后面的内容会单独提出来一个一个的学习.这里就先谈谈关于资源的控制个容器的网络~ 资源限制 其实 ...

  8. 【03】循序渐进学 docker:基础命令

    写在前面的话 之前谈了啥是 docker 和怎么安装 docker,这里就谈谈 docker 命令的使用,当然,这里的使用可能只是局限于 docker 的增删查改. 另外需要注意的是,为了图片的美观, ...

  9. 【04】循序渐进学 docker:Dockerfile

    写在前面的话 从前面我们简单的了解了镜像,也运行了容器,各种官方的镜像显然无法满足我们自己的需求,我们目的终究是运行自己的业务. 所以,本章节的 Dockerfile 就主要讲怎么在官方镜像的基础上制 ...

随机推荐

  1. Rest之路 - Rest架构中的重要概念(二)

    状态无关性 Rest 架构中不维持client,resource and request 的状态,我们通常称 Rest 服务是状态无关的.基于此的优势是为设计Rest架构提供了简便:每一个请求可以被完 ...

  2. 虚拟机在 OpenStack 里没有共享存储条件下的在线迁移

    虚拟机在 OpenStack 里没有共享存储条件下的在线迁移 本文尝试回答与 Live migration 相关的几个问题:Live migration 是什么?为什么要做 Live migratio ...

  3. springboot成神之——mybatis在spring-boot中使用的几种方式

    本文介绍mybatis在spring-boot中使用的几种方式 项目结构 依赖 WebConfig DemoApplication 方式一--@Select User DemoApplication ...

  4. List对象中的组合、查询、扩展

    var Pnts = segs.Select( c =>                                             pntTsLst.Where           ...

  5. Win8.1(64bit) Hyper-V 安装Ubuntu 14.04LTS(64 bit)

    为了学习在Linux平台下开发,时隔将近一年多,重新搭建开发环境. 写文档确实很费时间,不过还是很有必要写的,这么一个简单的事情花了接近3个小时才算最终大功告成. 像这种连环嵌套的问题,一旦超过了1个 ...

  6. VMWARE 虚拟机新增硬盘,格式化分区,并挂载

    VMWARE 虚拟机新增 硬盘 并挂载 一台虚拟机上安装ORACLE12c 需要分一块硬盘挂载数据文件 日志文件 以及归档文件 1. 关闭虚拟机 2. 编辑虚拟机设置 选择[编辑虚拟机设置]并打开,将 ...

  7. BMP格式详解

    BMP格式详解 BMP文件格式详解(BMP file format) BMP文件格式,又称为Bitmap(位图)或是DIB(Device-Independent Device,设备无关位图),是Win ...

  8. FastDFS和apache/nginx整合

    因为FastDFS默认自带的http服务器性能不好, 所以一般建议用外置的apache或者nginx 来解决http下载,以应付大并发的情况 注意nginx扩展模块只支持GET和HEAD模式获取文件, ...

  9. Hyperledger Fabric Transaction Proposal过程

    客户端将交易预提案(Transaction Proposal)通过 gRPC 发送给支持 Endorser 角色的 Peer 进行背书. 这些交易提案可能包括链码的安装.实例化.升级.调用.查询:以及 ...

  10. Yii2验证登录得User类

    Yii2中的  Class yii\web\User 是如果进行验证登录,如果我们使用User类验证登录会给我们减少很多麻烦.在此就拿Yii2中自带的登录功能进行说明. 配置.在应用配置文件compo ...