为什么要引入docker:
a. 微服务虽然有各种各种的优势 ,但是微服务的拆分部署还是带来很大的麻烦,
b. 分布式系统系统中,依赖的组件非常多,不同组件之间部署时往往会产生一些冲突
c. 在数百上千台的服务中重复 部署,环境不一定一致,会遇到各种问题
d. 开发 生产环境也有差异 依赖关系复杂, docker可以解决依赖兼容问题docker 解决依赖兼容问题2个手段
- 将程序的libs(函数库),依赖,环境,和配置与程序一起打包
- 将每个应用程序放到一个隔离的容器去运行,避免互相干扰
docker解决操作系统环境差异
a. docker镜像中包含完整的运行环境,包含所需要调用的系统函数库
b. 运行到不同的操作系统时,直接基于打包的函数库,借助于操作系统的lunix内核来完成运行docker与虚拟机的区别:
a. 虚拟机是在操作系统中模拟一台硬件设备,然后运行另一个操作系统,
b. docker仅仅是封装函数库,并没有模拟完整的操作系统
c. docker是一个系统进程,虚拟机是操作系统中的操作系统
d. docker体积小.启动速度快,性能好docker结构:镜像与容器
a. 镜像(image) :docker将程序以及程序所需要的依赖,函数库,配置文件,运行环境等文件打包在一起,称为镜像
b. 容器(container)镜像中应用程序运行后形成的进程就是容器,只是docker会对外做隔离,对外不可见**docker是cs结构:client和server 客户端和服务端 客户端发送指令 服务端处理指令和管理镜像和容器
**
镜像命令:
镜像名称组成: 2个部分 名字与版本号 例:mysql:5.3.4 没有指定版本号 默认为最新版本
指令1: docker pull 镜像名 拉取镜像 如果,没有配置自己的镜像库 默认在官网镜像库拉取
指令2: docker load -i 镜像压缩包名 解压加载镜像
指令3: docker save -o 镜像压缩包名 镜像名 打包镜像
指令4: docker rmi 镜像名 删除镜像
指令5: docker images 查看所有镜像
指令6: docker build 构建自定义的镜像 需要搭配 Dockerfile文件使用容器命令:
指令1: docker run —name 指定容器名字 -p 880:8080指定端口映射 -d 后台运行 镜像名 (创建并运行一个容器,处于运行状态)
指令2: docker pause 容器名 暂停容器
指令3: docker unpause 让一个暂停的容器恢复
指令4: docker start:让一个停止的容器再次运行
指令5: docker rm 容器名 删除指定容器
指令6: docker exec -it 容器名 bash ( docker exec进入指定容器内部 操作命令)
指令7:docker ps 查看正在运行的容器 加-a 表查看所有的容器数据卷 文件挂载:
数据卷volume是一个虚拟目录,指向宿主机文件中的某个目录
基本语法:docker volume create 创建一个数据卷
inspect 查看一个数据的信息
ls 列出所有的数据卷
prune 删除未使用的volume
rm 删除一个或者多个指定的数据卷
可以将容器与数据解耦合 方便操作
docker run —name 名字 -p 端口映射 -v 指定文件:要映射的文件 -d 镜像名Dockerfile语法

# 指定基础镜像
FROM ubuntu:16.04
# 配置环境变量,JDK的安装目录
ENV JAVA_DIR=/usr/local
