第一篇:docker基础精讲
- 第一章:容器技术概述
- 1.容器化技术的由来
- 2.容器发展的历史
- 3.Docker的诞生和幕后的公司
- 4.什么是docker?
- 5.使用docker的优势
- 6.docker容器引擎介绍
- 第二章:Docker容器引擎的安装部署
- 1.基础环境检查
- 2.安装epel源
- 3.安装官方docker源
- 4.安装最新版docker并配置
- 5.启动docker
- 6.核查docker配置及启动情况
- 7.启动第一个Docker容器
- 第三章:Docker的镜像管理
- 1.hub.docker.com
- 2.注册一个dockerhub账号
- 3.搜索一个镜像
- 4.下载一个镜像
- 5.查看本地镜像
- 6.给镜像打标签
- 7.推送镜像
- 8.给镜像再打一个标签
- 9.再次推送镜像
- 10.删除镜像
- 11.Docker 镜像新特性
- 第四章:Docker的基本操作
- 1.查看本地的容器进程
- 2.启动容器(运行镜像)
- 3.查看容器
- 4.进入容器
- 5.停止/启动/重启容器
- 6.删除容器
- 7.修改/提交容器
- 8.导出/导入容器
- 9.查看容器日志
- 第五章:Docker的高级操作
- 1.下载nginx镜像
- 2.映射端口
- 3.挂载数据卷
- 4.传递环境变量
- 5.容器内安装软件(工具)
- 6.容器的生命周期
- 第六章:Docker file详解
- 1.dockerfile介绍
- 2.USER/WORKDIR指令
- 3.ADD/EXPOSE指令
- 4.RUN/ENV指令
- 5.CMD/ENTRYPOINT指令
- 5.1 CMD指令
- 5.2 ENTRYPOINT指令
- 第七章:综合实验
- 1.准备Docker镜像
- 2.构建镜像
- 3.运行容器
- 4.验证
- 第八章:Docker的网络模型
- 1.NAT(默认)
- 2.None
- 3.Host
- 4.联合网络*
- 第九篇:快速更改密码
第一章:容器技术概述
1.容器化技术的由来
容器是一种基础工具。泛指任何可以用于容纳其它物品的工具,可以部分或完全封闭,被用于容纳、储存、运输物品。物体可以被放置在容器中,而容器则可以保护内容物。
容器的类型:
瓶、罐、箱、篮、桶、袋、瓮、碗、柜、盆、鞘 …
把系统里的三个服务拆分开,借助容器运行互补干扰
2.容器发展的历史
容器概念始于 1979 年提出的 UNIX chroot,它是一个 UNIX 操作系统的系统调用,将一个进程及其子进程的根目录改变到文件系统中的一个新位置,让这些进程只能访问到这个新的位置,从而达到了进程隔离的目的。

2000 年的时候 FreeBSD 开发了一个类似于 chroot 的容器技术 Jails,这是最早期,也是功能最多的容器技术。Jails 英译过来是监狱的意思,这个“监狱”(用沙盒更为准确)包含了文件系统、用户、网络、进程等的隔离。
2001 Linux 也发布自己的容器技术 Linux VServer,2004 Solaris 也发布了 Solaris Containers,两者都将资源进行划分,形成一个个 zones,又叫做虚拟服务器。
2005 年推出 OpenVZ,它通过对 Linux 内核进行补丁来提供虚拟化的支持,每个 OpenVZ 容器完整支持了文件系统、用户及用户组、进程、网络、设备和 IPC 对象的隔离。
2007 年 Google 实现了 Control Groups( cgroups ),并加入到 Linux 内核中,这是划时代的,为后期容器的资源配额提供了技术保障。
2008 年基于 cgroups 和 linux namespace 推出了第一个最为完善的 Linux 容器 LXC。
2013 年推出到现在为止最为流行和使用最广泛的容器 Docker,相比其他早期的容器技术,Docker 引入了一整套容器管理的生态系统,包括分层的镜像模型,容器注册库,友好的 Rest API。
2014 年 CoreOS 也推出了一个类似于 Docker 的容器 Rocket,CoreOS 一个更加轻量级的 Linux 操作系统,在安全性上比 Docker 更严格。
2016 年微软也在 Windows 上提供了容器的支持,Docker 可以以原生方式运行在 Windows 上,而不是需要使用 Linux 虚拟机。
基本上到这个时间节点,容器技术就已经很成熟了,再往后就是容器云的发展,由此也衍生出多种容器云的平台管理技术,其中以 kubernetes 最为出众,有了这样一些细粒度的容器集群管理技术,也为微服务的发展奠定了基石。因此,对于未来来说,应用的微服务化是一个较大的趋势。
3.Docker的诞生和幕后的公司
2010年,几个大胡子年轻人在旧金山成立了一家做PaaS平台的公司,起名为[dotCloud],dotCloud主要是基于PaaS平台为开发者或开发商提供技术服务。
Docker于2013.03.27正式作为public项目发布。
DotCloud公司2013年10月改名为Docker Inc,转型专注于Docker引擎和Docker生态系统。
落腮胡,皮夹克和摩托车,是Docker的灵魂人物CTO Solomon Hykeys的标准记号,外形看起来像是推动社会运动的老大。

Docker 容器的思想就是采用集装箱思想,为应用提供了一个基于容器的标准化运输系统。Docker 可以将任何应用及其依赖打包成一个轻量级、可移植、自包含的容器。容器可以运行在几乎所有的操作系统上。这样容器就可以跑在任何环境中,因此才有了那句话:
Build Once, Run Anywhere
4.什么是docker?
Docker是Docker.inc公司开源的一个基于LXC技术之上构建的Container容器引擎,源代码托管在GitHub上,基于Go语言并遵从Apache2.0协议开源(可以商业)。
Docker项目的目标是实现轻量级的操作系统虚拟化解决方案。
Docker是容器引擎,Docker是通过内核虚拟化技术(namespaces及cgroups等)来提供容器的资源隔离与安全保障等。由于Docker通过操作系统层的虚拟化实现隔离,所以Docker容器在运行时,不需要类似虚拟机VM额外的操作系统开销,提高资源利用率。
微软,红帽Linux,IBM,Oracle等主流IT厂商已经在自己的产品里增加了对Docker的支持。
相比其他早期的容器技术,Docker引入了一整套容器管理的生态系统,包括分层的镜像模型,容器注册库,友好Rest API。
下面图比较了Docker和传统虚拟化方式的不同之处,可见容器是在操作系统层面上实现虚拟化,直接复制本地主机的操作系统,而传统方式则是在硬件层面实现。


为了用docker容器模型,应用A和应用B在哪些层面上隔离呢?

5.使用docker的优势


6.docker容器引擎介绍
Docker引擎可以从Docker网站下载,也可以基于Github上的源码进行构建。无论是开源版本还是商业版本,都有Linux和windows版本。
Docker引擎主要有两个版本:企业版(EE)和社区版(CE)。
每个季度,企业版和社区版都会发布一个稳定版本。社区版本会提供4个月的支持,而企业版本会提供12个月的支持。
从2017年第一季度开始,Docker版本号遵循YY.MM-xx格式,类似于Ubuntu等项目。例如,2018年6月第一次发布的社区版为18.06.0-ce。
注:2017年第一季度以前,Docker版本号遵循大版本号.小版本号的格式。采用新格式前的最后一个版本是Docker1.13。
第二章:Docker容器引擎的安装部署
1.基础环境检查
[root@node4 ~]# uname -a
Linux node4.98yz.cn 3.10.0-693.21.1.el7.x86_64 #1 SMP Wed Mar 7 19:03:37 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
[root@node4 ~]# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
[root@node4 ~]# getenforce
Disabled
[root@node4 ~]# systemctl stop firewalld
[root@node4 ~]# free -m
total used free shared buff/cache available
Mem: 5806 135 5526 8 144 5459
Swap: 1023 0 1023
[root@node4 ~]# ping baidu.com
PING baidu.com (220.181.38.148) 56(84) bytes of data.
64 bytes from 220.181.38.148 (220.181.38.148): icmp_seq=1 ttl=51 time=92.4 ms
64 bytes from 220.181.38.148 (220.181.38.148): icmp_seq=2 ttl=51 time=42.5 ms
2.安装epel源
[root@node4 ~]# yum install epel-release -y
这里可以看到epel源里也有docker1.13.1
[root@node4 ~]# yum list docker --show-duplicates
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* epel: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
Available Packages
docker.x86_64 2:1.13.1-102.git7f2769b.el7.centos extras
docker.x86_64 2:1.13.1-103.git7f2769b.el7.centos extras
3.安装官方docker源
[root@node4 ~]# yum install yum-utils -y
[root@node4 ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
这里可以看到docker-ce源里的docker镜像了。
[root@node4 ~]# yum list docker-ce --show-duplicates
Loaded plugins: fastestmirror, langpacks
docker-ce-stable | 3.5 kB 00:00:00
(1/2): docker-ce-stable/x86_64/updateinfo | 55 B 00:00:05
(2/2): docker-ce-stable/x86_64/primary_db | 37 kB 00:00:05
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* epel: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
Available Packages
docker-ce.x86_64 17.03.0.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.03.1.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.03.2.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.03.3.ce-1.el7 docker-ce-stable
docker-ce.x86_64 17.06.0.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.06.1.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.06.2.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.09.0.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.09.1.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.12.0.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.12.1.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 18.03.0.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 18.03.1.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 18.06.0.ce-3.el7 docker-ce-stable
docker-ce.x86_64 18.06.1.ce-3.el7 docker-ce-stable
docker-ce.x86_64 18.06.2.ce-3.el7 docker-ce-stable
docker-ce.x86_64 18.06.3.ce-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.0-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.1-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.2-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.3-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.4-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.5-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.6-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.7-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.8-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.9-3.el7 docker-ce-stable
docker-ce.x86_64 3:19.03.0-3.el7 docker-ce-stable
docker-ce.x86_64 3:19.03.1-3.el7 docker-ce-stable
docker-ce.x86_64 3:19.03.2-3.el7 docker-ce-stable
docker-ce.x86_64
