数据管理
docker容器运行,产生一些数据、文件等等持久化的东西,不应该放在容器内部。应当以挂载的形式存在主机文件系统中。 1、镜像与容器读写层,通过联合文件系统,组成系统文件 2、容器服务运行中,一定会产生数据 3、容器只是运行态的服务器,是瞬时的,不承载数据的持久化功能
实例1:挂载mysql配置文件 (1)在宿主机相关目录下新建mysql配置文件 (2)创建默认的mysql服务(默认的mysql服务区分大小写) (3)挂载本地配置文件,不区分大小写 实例2:挂载容器数据卷
docker的文件系统
volume文件挂载的探究
volume-from引用数据卷
Docker-Compose使用
批量执行工程服务
docker-compose安装
curl 方式安装 sudo curl -L https://github.com/docker/compose/releases/download/1.17.1/docker-compose-uname -s -uname -m > /usr/local/bin/docker-compose 增加可执行权限 sudo chmod +x /usr/local/bin/docker-compose 安装完查看版本
docker-compose命令
docker-compose 的命令与 docker 命令极为相似,用法上没有区别,下面列出它特有的 几种命令: up 创建并启动容器:docker-compose up -d --scale 服务名=数字 ---------- d 表示后台运行,scale 是表示对应的服务同时启动几个容器 down 停止并删除容器: docker-compose down ---------- 会停掉容器,并删除掉容器。如果不希望删除容器,使用 stop
docker-compose实战
手动创建单体springboot镜像并运行
1、将 springboot 打好的 jar 包上传 2、在同级目录下,创建 Dockerfile 文件,内容如下: 3、dockerfile 打包业务镜像
4、启动镜像,即得到业务运行 5、浏览器打开页面校验:
集群化部署spring项目
version: '3' ##表示使用第三代语法
services: ##表示compose需要启动的服务
nginx:
container_name: my-nginx ##容器名称
image: nginx:1.9.7 ## 容器镜像
links: ##要引用的服务
- tomcat:tom
restart: always ##如果服务启动不成功一直尝试
ports: ##对外开放的端口
- 80:81
- 443:443
volumes: ##加载本地目录到容器目标路径
- /docker/nginx:/etc/nginx/conf.d
depends_on: ##依赖服务,先启动depend——on服务
- tomcat
mysql:
container_name: my-mysql
image: mysql:5.7
environment: ##容器环境变量
MYSQL_ROOT_PASSWORD: root1234
ports:
- "3306:3306"
restart: always
tomcat:
image: dockermvc:tan
restart: always
depends_on:
- mysql
~
编写一个项目整体服务,一个网关 nginx + tomcat 外加 mysql 的集群,如上图 其中 nginx 服务,将配置文件挂载在主机当前项目目录的路径下:/docker/nginx 命令:docker-compose up -d
docker-compose up -d --scale tomcat=2 docker-compose down:关闭一组容器服务
Swarm集群管理
swarm概念
我们使用docker容器化部署服务,都是局限在一台宿主机上操作。但是在实际中,我们部署的服务都是集群模式的,分布式部署的,没有以一台强大的物理机,能支撑整个分布式集群,而且这样也无法防范物理机的单点故障问题。 Swarm是Docker官方提供的一款集群管理工具,其主要作用是把若干台Docker主机抽象为一个整体,并且通过一个入口同一管理这个Docker主机上的各种Docker资源。 swarm service 相比单容器的一个最大优势就是,你能够修改一个服务的配置:包括网络、 数据卷,不需要手工重启服务。Docker 将会更新配置,把过期配置的 task 停掉,重新创建 一个新配置的容器。
- swarm:是一组 docker 引擎的集群
- node:是单个 docker 引擎的实例,可以在一个物理机上也可以在多个
- manager node:部署应用的时候会有一个 manager node 节点
- Worker nodes:对应的就是 Worker nodes
- service:然后 service 是一堆被 workder 执行的任务
- task:一个 task 就是一个 docker 的容器,是 Swarm 的工作单元
创建、使用
规划俩台网路互通的机器 swarm1 114.55.242.212 阿里云服务器 swarm2 121.4.182.15 腾讯云服务器 1、修改 docker 监听端口( P TCP 端口 2375 5 ) vi /lib/systemd/system/docker.service 重启 docker 服务: systemctl daemon-reload systemctl restart docker 2、创建管理节点 docker swarm join --token SWMTKN-1-41v0dwkwt3tgp19hmturaqs4tn1lar7kiid6y2jku8lhczmb10-0p59gqr8xt1kbulun9s4tpado 114.55.242.212:2377 3、添加工作节点到集群 主节点查看集群 节点退出,看结果 创建服务 创建一个 nginx 集群,3 台机器 docker service create --name nginx --replicas 3 -p 80:80 nginx:1.7.9 删除docker service rm nginx
|