弱小和无知不是生存的障碍,傲慢才是。
一、Docker的概述
所有的技术都是因为出现了一些问题,我们需要去解决,才去学习!
1.1 为什么要去学习Docker
在没有出现Docker之前,我们的部署环境变得很麻烦,当换一台电脑或服务器都需要重新安装一些软件,插件,中间件,都要重新配置,有了Docker之后,就变得尤为简单,直接搬离Docker就可以了。
1.2 Docker 概述
Docker是一个开源的容器引擎,它可以帮助我们更快地交付应用。Docker可将应用程序和基础设施层隔离,并且能将基础设施当作程序一样进行管理。使用Docker,可更快地打包、测试以及部署应用程序,并可减少从编写到部署运行代码的周期。
1.3 Docker的历史
- 2010 年,几个搞IT的年轻人,就在美国成立了一家公司 dotCloud;
- 做一些 pass的云计算服务! linux有关的容器技术;
- 他们将自己的技术(容器化技术)命名为Docker!
- Docker刚刚诞生的时候,没有引起行业的注意!dotCloud,这时候dotCloud就很难活下去了!
- 所以他们就采取了开源,差不多也就是2013年
- 这时候Docker被越来越多的人发现了,并且知道了Docker的优点,这时候Docker就开始火了,进而就每个月都更新一个新的版本!
- 2014年4月9日,Docker1.0版本发布!
- 直到现在,Docker成为了开发运维人员的必备技能,所以我们必须要掌握它哦!!
1.4 Docker 官网
Docker是基于 Go语言开发的开源项目!
1.5 Docker能做什么
之前的虚拟机技术
虚拟机技术缺点:
- 资源占用十分多;
- 冗余步骤多;
- 启动很慢。
现在使用容器化技术
容器化技术不是模拟的一个完整的操作系统
比较Docker和虚拟机技术的不同
- 传统虚拟机,虚拟出一条硬件,运行一个完整的操作系统,然后在这个系统上安装和运行软件;
- 容器内的应用直接运行在宿主机的内核,容器是没有自己内核的,也没有虚拟我们的硬件,所以就轻便了;
- 每个容器间是互相隔离的,每个容器内都有一个属于自己的文件系统,互不影响。
1.6 DevOps(开发、运维)
应用更快速的的交付和部署
- 传统:一堆帮助文档,安装程序
- Docker:打包镜像发布测试,一键运行
更快捷的升级和扩缩容
- 使用了Docker之后,我们部署应用就和搭积木一样!
- 项目打包为了一个镜像,扩展 服务器A !服务器B
更简单的系统运维
- 在容器化之后,我们的开发,测试环境都是高度一致的。
更高效的计算资源利用
Docker是内核级别的虚拟化,可以在一个物理机尚可以运行很多的容器实例!服务器的性能可以被压榨到极致。
二、Docker安装启动(官网)
2.1 Docker 架构
2.1.1 镜像(image)
Docker镜像就好比是一个模板,可以通过这个模板来创建容器服务,tomcat镜像 >run>tomcat01容器(提供服务器),通过这个镜像可以创建多个容器(最终服务运行或者项目运行就是在容器中的)类似于一个装系统的光盘。
2.1.2 容器(container)
Docker利用容器技术,独立运行一个或者一个组应用,通过镜像来创建的。
启动,停止,删除,基本命令!
目前就可以把这个容器理解为就是一个简易的linux系统
2.1.3 仓库(repository)
仓库就是存放镜像的地方!
仓库分为公有仓库和私有仓库!
Docker Hub(默认是国外的)
阿里云……都有容器服务器(配置镜像加速!)
2.2 Docker安装启动
- 环境准备
- 需要会一点点的Linux的基础,前面都总结喽
- CentOS 7 前面安装步骤参考
- 我们使用Xshell连接远程服务器进行操作!(下面都可以的)
- 环境查看
uname -a
cat /etc/os-release
- 安装
- 卸载旧的版本
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
- 需要的安装包
yum install -y yum-utils
报错解决:cannot find a valid baseurl for repo:base/7/x86_64
- 设置镜像的仓库
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo #默认是国外的
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo #推荐使用阿里云的(百度搜索 docker阿里云镜像地址即可)
- 安装下面5之前先更新哈
yum makecache fast
- 安装docker相关的内容 ce 为社区版 ee为企业版 一般使用社区版就行了
yum install docker-ce docker-ce-cli containerd.io
如果出现下面直接 y 即可
# 6. 安装完启动 docker
systemctl start docker
#7.使用docker version查看是否安装成功
docker version
8. 测试 hello-world
docker run hello-world
#9. 查看上面 hello-world 镜像是否下载,下载到哪
docker images
# 10. 卸载依赖
yum remove docker-ce docker-ce-cli containerd.io
# 11. 删除docker资源
rm -rf /var/lib/docker
#/var/lib/docker docker默认工作路径
三、Docker安装启动(本地)
3.1. 下载Docker-CE rpm安装包
注意下载版本要和操作系统版本对应。
本地获取 docker-ce-18.06.2.ce-3.el7.x86_64.rpm
3.2 安装Docker
执行命令:
yum install -y docker-ce-18.06.2.ce-3.el7.x86_64.rpm
注意:确保linux服务器处于联网状态。
3.3 启动与停止Docker
启动docker:
systemctl start docker
停止docker:
systemctl stop docker
重启docker:
systemctl restart docker
查看docker状态:
systemctl status docker
3.4 验证Docker是否安装成功
执行命令:
docker info
查看返回信息,能否查看到Docker相关信息
到此,Docker安装完毕!
四、 配置阿里云镜像加速
2. 配置使用
分为四步走:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://fln0ctgy.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
理解上面的 Hello-world的流程(在docker中是怎么运行的)
五、 Docker 底层原理
5.1 Docker是怎么工作的
- Docker是一个Client - Server结构的系统,Docker的守护进程运行在主机上。通过Socket从客户端访问!
- DockerServer 接收到Docker - Client的指令,就会执行这个命令!
5.2 Docker为什么比VM快
- Docker有着比虚拟机更少的抽象层。
- Docker利用的是宿主机的内核,vm需要的是 Guest OS.
- 所以说,新建一个容器的时候,docker不需要想虚拟机一样重新加载一个操作系统内核,避免引导。虚拟机是加载Guest OS,分钟级别的,而docker是利用宿主机的操作系统,省略了这个复杂的过程,秒级!
学习了后面即将总结的所有命令,再回过来看这段理论,就会很清晰的!