Docker-Compose单机容器集群编排工具

目录

前言

1.Docker-compose简介

2. YAML文件格式及编写注意事项

3. Docker-Compose配置常用字段

4.Docker Compose常用命令

5.使用Docker-compose创建LNMP环境,并运行Wordpress网站平台


前言

我们知道使用一个Dockerfile模板文件可以定义一个单独的应用容器,如果需要定义多个容器就需要服务编排。下面介绍Docker官方产品,Docker Compose。

1.Docker-compose简介

Dockercompose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。Docker compose项目由 Python 编写,调用 Docker 服务提供的 API来对容器进行管理。因此,只要所操作的平台支持Docker API,就可以在其上利用 compose 来进行编排管理。

Dockercompose一个用于定义和运行多容器 pocker 应用程序的工具。它允许用户使用 YAL 文件米定义应用程序的配置,包括容器的数量、容器之间的依赖关系。环境变量、端口映射以及其他设置。然后,用户可以使用 docker-compose 命令来启动和管理这些容器。

使用 Docker compose 可以方便地管理多个容器,例如,可以同时启动一个 meb 服务器容器和一个数据库容器,并在它们之间建立网络连接。Docker compose还支持自定义网络,使得容器可以在不同的网络中进行通信。

Docker compose文件通常包含一个或多个服务,每个服务都由一个或多个容器组成。服务定义了容器应该执行的任务,以及容器之间的依赖关系。例如,一个 eD 服务器服务可以句含一个或多个Web 服务器容器,,而这些容器又依赖于一个数据库容器。

docker-compose将所管理的容器分为三层, 分别是工程(project),服务(service)以及容器(containner)

Docker-Ccompose 的项目配置文件默认为 docker-copose.yml,可通过环境变量 (COMPOSE_FILE 或 -f 参数自定义配置文件, 其定义了多个有依赖关系的服务及每个服务运行的容器。compose 允许用户通过一个单独的 docker-compose.yml模板文件(YAML格式)来定义一组相关联的应用容器为一个项目(project)。

2. YAML文件格式及编写注意事项

YAML 是一种标记语言,它可以很直观的展示数据序列化格式,可读性高。类似于 json 数据描述语言,语法比 json 简单的很多。YAML 数据结构通过缩进来表示,连续的项目通过减号来表示,键值对用冒号分隔,数组用中括号 [] 括起来, hash 用花括号 {} 括起来。

使用 YAML 时需要注意下面事项:

  • 大小写敏感
  • 通过缩进表示层级关系
  • 不支持制表符 tab 键缩进,只能使用空格缩进
  • 缩进的空格数目不重要,只要相同层级左对齐,通常开头缩进2个空格
  • 用 # 号注释
  • 符号字符后缩进1个空格,如冒号 :  、逗号 ,  、横杠 - 
  • 如果包含特殊字符用单引号('')引起来会作为普通字符串处理,双引号(""): 特殊字符作为本身想表示的意思

yaml数据结构:

#键值对表示

  • animal:pets

 #数组:一组按次序排列的列表

  • - cat
  • - dog
  • - goldfish

 #布尔值

debug: "true"
debug: "false"
#yaml实例
languages:        #序列的映射 - java- Golang- Pythonwebsites:         #映射的映射Baidu: www.baidu.comWangyi: www.163.comSouhu: www.souhu.com#或者
languages: ["java","Golong","Python"]
websites:Baidu:www.baidu.comWangyi:www.163.comSouhu:www.souhu.com

3. Docker-Compose配置常用字段

        字段    描述

  • build    指定Dockerfile文件名,要指定Dockerfile文件,需要在build标签的子级标签中使用dockerfile标签指定
  • dockerfile    指定dockerfile文件名
  • context    指定dockerfile文件所在的目录路径
  • image    指定镜像
  • command    指定容器的启动命令,会覆盖镜像中的CMD命令
  • container_name    指定容器名称,由于容器名称是唯一的,如果指定自定义名称,则无法scale指定容器数量
  • deploy    指定部署和运行服务相关配置,只能在Swarm模式使用
  • environment    添加环境变量
  • networks    设置容器使用的自定义网络和IP
  • network_mode    设置容器的网络模式,如host,bridge,…
  • ports    暴露容器端口,与-p相同,但端口不能低于60
  • volumes    挂载一个宿主机目录或数据卷到容器,命名卷要在顶级volumes定义卷名称
  • volumes_from    从另一个服务或容器挂载卷,可选参数:ro和:rw,仅版本’2’支持
  • hostname    容器主机名
  • sysctls    在容器内设置内核参数
  • links    设置容器互联,“- 服务名称 [:服务别名]“
  • privileged    用来给容器root权限,注意是不安全的,true | fals
  • restart    
  • 设置重启策略,no,always,no-failure,unless-stopped
  • no,默认策略,在容器退出时不重启容器。
  • on-failure,在容器非正常退出时(退出状态非0),才会重启容器。
  • on-failure:3,在容器非正常退出时重启容器,最多重启3次。
  • always,在容器退出时总是重启容器。
  • unless-stopped,在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器。
  • depends_on    在使用Compose时,最大的好处就是少打启动命令,但一般项目容器启动的顺序是有要求的,如果直接从上到下启动容器,可能会因为容器依赖问题而启动失败。例如在没启动数据库容器的时候启动应用容器,应用容器会因为找不到数据库而退出。depends_on标签用于解决容器的依赖、启动先后的问题。
php:
depends_on:
- apache
- mysql

4.Docker Compose常用命令

      字段       描述

  • build    重新构建服务
  • up    创建和启动容器
  • exec    在容器里面执行命令
  • ps    列出容器
  • scale    指定一个服务容器启动数量
  • top    显示容器进程
  • logs    查看容器输出
  • down    删除容器、网络、数据卷和镜像
  • stop/start/restart    停止/启动/重启服务

5.使用Docker-compose创建LNMP环境,并运行Wordpress网站平台

cd /opt
mkdir compose
cd compose/
mkdir lnmp-compose
cd lnmp-compose/
touch docker-compose.yml
mkdir nginx mysql php
cd nginx
将所需要的软件包移到该目录下
/opt/compose/lnmp-compose
vim docker-compose.yml
version: "3"
services:web:build:context: ./nginx/dockerfile: Dockerfilecontainer_name: nginxports:- 80:80volumes:- ./nginx/html:/usr/local/nginx/htmlnetworks:mynetwork:ipv4_address: 172.18.0.10db:image: mysql:lnmpcontainer_name: mysqlprivileged: truevolumes:- db-data:/usr/local/mysqlnetworks:mynetwork:ipv4_address: 172.18.0.20php:image: php:lnnmpcontainer_name: phpports:- 9000:9000volumes:- db-data:/usr/local/mysql- ./nginx/html:/usr/local/nginx/htmlnetworks:mynetwork:ipv4_address: 172.18.0.30depends_on:- web- db
networks:mynetwork:driver: bridgeipam:config:- subnet: 172.18.0.0/16volumes:db-data:
docker-compose -f docker-compose.yml up -d授权MySQL数据库
docker ps -a #查看MySQL容器id
docker exec -it 7023bfb95bc0
mysqladmin -u root -p password "abc123"
mysql -u root -pabc123
grant all on *.* to 'root'@'%' identified by 'abc123';
flush privileges;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/874483.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端:Vue学习-3

前端:Vue学习-3 1. 自定义指令2. 插槽2.1 插槽 - 后备内容(默认值)2.2 插槽 - 具名插槽2.3 插槽 - 作用域插槽 3. Vue - 路由3.1 路由模块封装3.2 声明式导航 router-link 高亮3.3 自定义匹配的类名3.4 声明式导肮 - 跳转传参3.5 Vue路由 - 重…

[题解]CF1401E.Divide Square(codeforces 05)

题目描述 There is a square of size 106106106106 on the coordinate plane with four points (0,0)(0,0) , (0,106)(0,106) , (106,0)(106,0) , and (106,106)(106,106) as its vertices. You are going to draw segments on the plane. All segments are either horizonta…

【数据结构】顺序表(ArrayList的具体使用)

🎇🎉🎉🎉点进来你就是我的人了 博主主页:🙈🙈🙈戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔 💪💪💪 谢谢你这么帅…

VSCode STM32嵌入式开发插件记录

要卸载之前搭建的VSCode嵌入式开发环境了,记录一下用的插件。 1.Cortex-Debug https://github.com/Marus/cortex-debug 2.Embedded IDE https://github.com/github0null/eide 3.Keil uVision Assistant https://github.com/jacksonjim/keil-assistant/ 4.RTO…

支持向量机(SVM,Support Vector Machine)

支持向量机(SVM,Support Vector Machine)是一种监督学习模型,主要用于分类和回归分析。它的优点包括: 优点: 高效解决高维问题:通过核函数可以将低维数据映射到高维空间,使得非线性…

政安晨【零基础玩转各类开源AI项目】基于Ubuntu系统部署MimicMotion :利用可信度感知姿势指导生成高质量人体运动视频

目录 项目介绍 项目相关工作 图像/视频生成的扩散模型 姿势引导的人体动作转移 生成长视频 方法实践 与最先进方法的比较 消融研究 部署验证 1. 下载项目: 2. 建立环境 3. 下载参数模型 A. 下载 DWPose 预训练模型:dwpose B. 从 Huggingfa…

学术研究期刊

投稿指南 一、《学术研究》投稿须知   来稿需为作者的原创性研究成果,除了文中特别加以标注和致谢的地方外,不包含他人已经发表或者撰写过的研究成果,也不包含作者已经发表的研究成果。如发现学术不端行为,本刊将追究相关责任人…

DDD(3)-领域驱动设计之如何建模

前言 上一篇:从领域驱动到模型驱动中我们讨论到,领域驱动设计的核心思想是保持业务-模型-代码的一致性,模型作为沟通业务和代码的工具,至关重要,今天这篇文章就来讨论DDD中建模的一些思考和方法。 什么是建模 虽然看…

基于SSM的高考志愿选择辅助系统

基于SSM的高考志愿选择辅助系统的设计与实现~ 开发语言:Java数据库:MySQL技术:SpringSpringMVCMyBatis工具:IDEA/Ecilpse、Navicat、Maven 系统展示 前台 前台首页 院校展示 后台 后台首页 学校管理 摘要 随着高考制度的不断完…

【Drone】drone编译web端 防墙策略 | 如何在被墙的状态drone顺利编译npm

一、drone编译防墙版本 1、web端drone kind: pipeline type: docker name: ui steps:- name: build_projectimage: node:20-slim depends_on: [clone]volumes:- name: node_modulespath: /drone/src/node_modulescommands:- pwd- du -sh *- npm config set registry https://…

前端使用 Konva 实现可视化设计器(18)- 素材嵌套 - 加载阶段

本章主要实现素材的嵌套(加载阶段)这意味着可以拖入画布的对象,不只是图片素材,还可以是嵌套的图片和图形。 请大家动动小手,给我一个免费的 Star 吧~ 大家如果发现了 Bug,欢迎来提 Issue 哟~ github源码 g…

测试——Selenium

内容大纲: 什么是自动化测试 什么是Selenium Selenium工作原理 Selenium环境搭建 Selenium API 目录 1. 什么是自动化测试 2. 什么是Selenium 3. Selenium工作原理 4. Selenium环境搭建(java) 5. Selenium API 5.1 定位元素 5.1.1 CSS选择器定位元素 5.1.2 XPath定位元…

PHP进阶:前后端交互、cookie验证、sql与php

单词:construct 构造 destruct 摧毁 empty 空的 trim 修剪 strip 清除 slash 斜线 special 特殊 char 字符 query 询问 构造方法(魔术方法) 构造方法是一种特殊的函数&#xff0…

QT 4.8版本的Ubuntu2004编译错误的解决方案

arm-linux-gnueabihf-gcc 5.2编译qt4.8.5_error: ‘class ui::qprintpropertieswidget’ has no m-CSDN博客

k8s中部署nacos

1 部署nfs # 在k8s的主节点上执行 mkdir -p /appdata/download cd /appdata/download git clone https://github.com/nacos-group/nacos-k8s.git 将nacos部署到middleware的命名空间中 kubectl create namespace middleware cd /appdata/download/nacos-k8s # 创建角色 kub…

VScode连接虚拟机运行Python文件的方法

声明:本文使用Linux发行版本为rocky_9.4 目录 1. 在rocky_9.4最小安装的系统中,默认是没有tar工具的,因此,要先下载tar工具 2. 在安装好的vscode中下载ssh远程插件工具 3. 然后连接虚拟机 4. 查看python是否已经安装 5. 下载…

linux代填密码切换用户

一、背景 linux用户账户密码复杂,在不考虑安全的情况下,想要使用命令自动切换用户 二、操作 通过 expect 工具来实现自动输入密码的效果 yum install expect创建switchRoot.exp文件,内容参考下面的 #!/usr/bin/expect set username root…

【状态估计】偏差,匹配和外点

我们都知道:对于状态的估计可能是有偏差的,特别是在运动模型或观测模型是非线性的情况下。在简单的立体相机的例子中,我们看到MAP方法相比于全贝叶斯方法来说是有偏差的。同时,我们也看到批量ML方法对于真实值来说也是有偏差的&am…

openEuler操作系统下Oracle 19c 从19.3补丁更新到19.17

Oracle 19c 从补丁19.3更新到19.17的过程涉及到多个步骤,包括备份、下载补丁、替换OPatch、验证清单信息、冲突检测、空间检测、应用补丁等。以下是一个概括性的流程,但请注意,具体步骤可能会根据实际的Oracle环境、补丁内容和Oracle的官方指…

【接口自动化_07课_Pytest+Excel+Allure完整框架集成_下】

目标:优化框架场景 1. 生成对应的接口关联【重点】 2. 优化URL基础路径封装【理解】 3. 利用PySQL操作数据库应用【理解】--- 怎么用python连接数据库、mysql 4. 通过数据库进行数据库断言【重点】 5. 通过数据库进行关联操作【重点】 一、接口关联&#xff1a…