SpringCloud之Docker(SpringCloud七)

目录

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. 初识Docker

1.1 Docker为什么出现?

微服务部署难

  • 依赖复杂,存在兼容性问题。
  • 开发、测试、生产环境差异。

1.2 怎么解决

1.2.1 解决兼容性问题

  • 将应用的函数库,依赖,配置与应用一起打包。
  • 采用沙箱,放到隔离容器运行。

1.2.2 解决环境差异

将用户程序所需要用到的系统函数库一起打包,运行到不同操作系统时,基于打包的函数库,借助Linux内核来运行,不在依赖于环境函数库。

1.3 与虚拟机区别

虚拟机:在操作系统中模拟硬件设备,然后运行另一个操作系统。

Docker:仅仅是封装的函数库。

1.4 Docker架构

1.4.1 镜像

Docker应用程序及其所需要的函数库,依赖,环境,配置等文件一起打包,称为镜像。

1.4.2 容器

镜像中的应用程序运行后形成的进程就是容器。一个镜像可以有多个容器。

1.4.3 架构

CS架构,两部分组成:

  • 客户端(Client):通过命令或RestApi向服务的发送命令。
  • 服务端(Server):Docker守护进程,处理Docker指令,管理镜像,容器等。

2. Docker基本操作

2.1 镜像操作

镜像名称:名称:版本 | [repository] : [tag]

镜像命令:Docker --help

2.2 容器操作

  • docker run:创建并运行一个容器,处于运行状态
  • docker pause:让一个运行的容器暂停
  • docker unpause:让一个容器从暂停状态恢复运行
  • docker stop:停止一个运行的容器
  • docker start:让一个停止的容器再次运行
  • docker rm:删除一个容器

2.2.1 创建并运行nginx容器的命令:

docker run --name containerName -p 80:80 -d nginx

命令解读:

  • docker run :创建并运行一个容器
  • --name : 给容器起一个名字,比如叫做mn
  • -p :将宿主机端口与容器端口映射,冒号左侧是宿主机端口,右侧是容器端口
  • -d:后台运行容器
  • nginx:镜像名称,例如nginx

2.2.2 进入容器

进入我们刚刚创建的nginx容器的命令为:

docker exec -it mn bash

命令解读:

  • docker exec :进入容器内部,执行一个命令
  • -it : 给当前进入的容器创建一个标准输入、输出终端,允许我们与容器交互
  • mn :要进入的容器的名称
  • bash:进入容器后执行的命令,bash是一个linux终端交互命令

2.3 数据卷

数据卷(volume)是一个虚拟目录,指向宿主机文件系统中的某个目录。

相当于引用,将文件写道宿主机文件中,当容器需要用到时给他一个地址去那儿读。

2.3.1 数据卷命令

数据卷操作的基本语法如下:

docker volume [COMMAND]

docker volume命令是数据卷操作,根据命令后跟随的command来确定下一步的操作:

  • create 创建一个volume
  • inspect 显示一个或多个volume的信息
  • ls 列出所有的volume
  • prune 删除未使用的volume
  • rm 删除一个或多个指定的volume

2.3.2 挂载数据卷

我们在创建容器时,可以通过 -v 参数来挂载一个数据卷到某个容器内目录,命令格式如下:

docker run \

 --name mn \

 -v html:/root/html \

 -p 8080:80

nginx \

这里的-v就是挂载数据卷的命令:

  • -v html:/root/htm :把html数据卷挂载到容器内的/root/html这个目录中

3. DockerFile自定义镜像

3.1 镜像结构

分层:

SpringCloud之Docker(SpringCloud七)_第1张图片

简单来说,镜像就是在系统函数库、运行环境基础上,添加应用程序文件、配置文件、依赖文件等组合,然后编写好启动脚本打包在一起形成的文件。我们要构建镜像,其实就是实现上述打包的过程。

3.2 DockerFile语法

Dockerfile就是一个文本文件,其中包含一个个的指令(Instruction),用指令来说明要执行什么操作来构建镜像。每一个指令都会形成一层Layer。

SpringCloud之Docker(SpringCloud七)_第2张图片

3.3 项目构建

用到在学。

4. Docker-Compose

4.1 初识DockerCompose

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文件就描述一个项目,其中包含两个容器:

  • mysql:一个基于mysql:5.7.25镜像构建的容器,并且挂载了两个目录
  • web:一个基于docker build临时构建的镜像容器,映射端口时8090

其实DockerCompose文件可以看做是将多个docker run命令写到一个文件,只是语法稍有差异。

4.2 部署微服务集群

4.3 Docker镜像仓库

你可能感兴趣的:(SpringCloud,docker,容器,spring,cloud)