Docker 是什么
Docker 可以做什么
如何配置Docker
如何借助Docker隔离环境,实现电脑上同时具备Node,Python,Golang开发环境
如何方便的进行资源回收
一、Docker 介绍
1.1 引言
我本地运行没问题啊。
环境不一致
通过Docker可以提供一致的环境
那个哥们又写死循环了,怎么这么卡
在多用户的操作系统下,会互相影响
(在一个系统下,一个应用的系统占用高,另一个应用也会受影响)
淘宝在双11的时候,用户量暴增
运维成本过高
(双十一大量并发,肯定需要增加服务器扩容,提高并发能力,肯定不能依靠运维人员去手动扩容部署)
学习一门技术,学习成本过高
关于安装软件成本过高
1.2 Docker 的由来
一帮年轻人创业,创办了一家公司,2010年的专门做PAAS平台。
到了2013年的时候,像亚马逊,微软,Google都开始做PAAS平台。
2013年,将公司内部的核心技术对外开源,核心技术就是Docker。
到了2014年的时候,得到了C轮融资,$5400w。
到了2015年的时候,得到了D轮融资,$9500w.
全神贯注的维护Docker。
所罗门主要作者之一。
Docker 的作者已经离开了维护Docker的团队。
1.3 Docker的思想
集装箱
会将所有需要的内容放到不同的集装箱中,谁需要这些环境就直接拿到这个集装箱就可以了。
标准化
- 运输的标准化:Docker有一个码头(中央仓库),所有上传的集装箱都在这个码头上,当谁需要某一个环境,就直接指派大海疼去搬运这个集装箱就可以了。
- 命令的标准化:Docker提供了一系列的命令,帮助我们去获取集装箱等操作。
- 提供了REST的API,衍生出了很多的图形化界面,比较有名的Rancher
隔离性
Docker在运行集装箱内的内容时,会在Linux的内核中,单独地开辟一片空间,这片空间不会影响到其他程序。
- 注册中心,也叫中央仓库,公共仓库(超级码头,上面放的就是集装箱)
- 镜像。(集装箱)
- 容器。(运行起来的镜像)
二、Docker的基本操作
2.1 安装Docker(centOS7)
https://docs.docker.com/engine/install/centos/#prerequisites
1 | # 1. 先安装 yum-utils 软件包(提供yum-config-manager 实用程序)。(yum-utils 不存在的情况下) |
1 | # 1. 卸载Docker Engine,CLI和Containerd软件包 |
2.2 Docker的中央仓库
Docker 官方的中央仓库:这个仓库镜像最全,但速度较慢
国内的镜像网站:网易蜂巢,daoCloud
daocloud:https://hub.daocloud.io/
在公司内部会采用私服的方式拉取镜像(添加配置)
1 | # centsOS 指定镜像源 |
2.3 镜像操作
1 | # 1. 拉取镜像到本地 |
1 | # 2. 查看全部本地的镜像 |
1 | # 3. 删除本地镜像 |
1 | # 4. 镜像的导入导出(不规范) |
4.3 加载本地镜像之后镜像名字和tag都成none了,可以通过docker tag 命令修改
1 docker tag 运行起来的镜像ID 要起的名字:重新修改版本号
2.4 容器的操作
1 | # 1. 运行容器 |
1 | # 2. 查看正在运行的容器 |
1 | # 3. 查看容器的日志 |
1 | # 4. 进入到容器内部 |
1 | # 5. 删除容器(删除容器前,需要先停止容器) |
1 | # 6. 启动容器 |
三、Docker 应用
让 tomcat 容器去连接 mysql
3.1 准备SSM工程
1 |
3.2 准备MySQL容器
1 | # 1. 拉取MySQL镜像(run命令运行docker镜像,当镜像不存在,会自动帮我们拉取镜像,所以我们拉取与运行两步合一,直接运行run命令) |
3.3 准备Tomcat容器
1 | # 1. 运行tomcat容器 |
3.4 数据卷
如上,为了部署SSM的工程,需要使用到cp命令将宿主机内的ssm.war文件复制到容器内部。但这样会存在一个问题,当你需要修改项目的内容,频繁部署时,会非常不方便。此时就可以使用数据卷,数据卷的作用就是将宿主机的一个目录映射到容器内的一个目录中,这样当宿主机目录内的文件发生改变时,容器会同步生效(注意:这里是映射,而不是将宿主机的文件同步到容器)
数据卷:将宿主机的一个目录映射到容器的一个目录中
1 | # 1. 创建数据卷 |
1 | # 2. 查看数据卷的详细信息 |
1 | # 3. 查看全部数据卷 |
1 | # 4. 删除数据卷 |
1 | # 5. 启动数据卷 |
四、Docker自定义镜像
中央仓库上的镜像,也是Docker用户自己上传上去的
1 | # 1. 创建一个Dockerfile文件,并且指定自定义镜像信息。 |
1 | # 2. 将准备好的Dockerfile和相应的文件放在同一个目录内,通过Docker的命令制作镜像 |
六、Docker-Compose
之前运行一个镜像,需要添加大量参数。
可以通过Docker-Compose编写这些参数。
Docker-Compose 可以帮助我们批量管理容器。
只需要通过一个docker-compose.yml文件去维护即可。
6.1 下载Docker-Compose
1 | # 1. 去github官网搜索docker-compose,下载1.24.1版本的Docker-Compose |
6.2 Docker-Compose 管理MySQL和Tomcat容器
yml文件以 key: value 方式来指定配置信息
多个配置信息以换行+锁进的方式来区分
在docker-compose.yml文件中,锁进不要使用制表符
1 | version: '3.1' |
6.3 使用docker-compose 命令管理容器
在使用
docker-compose
的命令时,会默认在当前目录下查找 docker-compose.yml 文件
1 | 1. 基于docker-compose命令,启动管理的容器 |
1 | 2. 关闭并删除容器 |
1 | 3. 启动|停止|重启由docker-compose维护的容器 |
1 | 4. 查看由docker-compose管理的容器 |
1 | 5. 查看日志 |