目录
1. 初识Docker
1.1 Docker为什么出现?
1.2 怎么解决
1.3 与虚拟机区别
1.4 Docker架构
2. Docker基本操作
2.1 镜像操作
2.2 容器操作
2.3 数据卷
3. DockerFile自定义镜像
3.1 镜像结构
3.2 DockerFile语法
3.3 项目构建
4. Docker-Compose
4.1 初识DockerCompose
4.2 部署微服务集群
4.3 Docker镜像仓库
微服务部署难
1.2.1 解决兼容性问题
1.2.2 解决环境差异
将用户程序所需要用到的系统函数库一起打包,运行到不同操作系统时,基于打包的函数库,借助Linux内核来运行,不在依赖于环境函数库。
虚拟机:在操作系统中模拟硬件设备,然后运行另一个操作系统。
Docker:仅仅是封装的函数库。
1.4.1 镜像
Docker应用程序及其所需要的函数库,依赖,环境,配置等文件一起打包,称为镜像。
1.4.2 容器
镜像中的应用程序运行后形成的进程就是容器。一个镜像可以有多个容器。
1.4.3 架构
CS架构,两部分组成:
镜像名称:名称:版本 | [repository] : [tag]
镜像命令:Docker --help
2.2.1 创建并运行nginx容器的命令:
docker run --name containerName -p 80:80 -d nginx
命令解读:
2.2.2 进入容器
进入我们刚刚创建的nginx容器的命令为:
docker exec -it mn bash
命令解读:
数据卷(volume)是一个虚拟目录,指向宿主机文件系统中的某个目录。
相当于引用,将文件写道宿主机文件中,当容器需要用到时给他一个地址去那儿读。
2.3.1 数据卷命令
数据卷操作的基本语法如下:
docker volume [COMMAND]
docker volume命令是数据卷操作,根据命令后跟随的command来确定下一步的操作:
2.3.2 挂载数据卷
我们在创建容器时,可以通过 -v 参数来挂载一个数据卷到某个容器内目录,命令格式如下:
docker run \
--name mn \
-v html:/root/html \
-p 8080:80
nginx \
这里的-v就是挂载数据卷的命令:
分层:
简单来说,镜像就是在系统函数库、运行环境基础上,添加应用程序文件、配置文件、依赖文件等组合,然后编写好启动脚本打包在一起形成的文件。我们要构建镜像,其实就是实现上述打包的过程。
Dockerfile就是一个文本文件,其中包含一个个的指令(Instruction),用指令来说明要执行什么操作来构建镜像。每一个指令都会形成一层Layer。
用到在学。
Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。格式如下:
version: "3.8"
services:
mysql:
image: mysql:5.7.25
environment:
MYSQL_ROOT_PASSWORD: 123
volumes:
- "/tmp/mysql/data:/var/lib/mysql"
- "/tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf"
web:
build: .
ports:
- "8090:8090"
上面的Compose文件就描述一个项目,其中包含两个容器:
其实DockerCompose文件可以看做是将多个docker run命令写到一个文件,只是语法稍有差异。