大鲸鱼docker-compose单机容器集群编排工具
目录
一、Docker-compose 概述
二、Docker-compose简介
三、YML文件格式及编写注意事项
1.yml文件是什么
2.yml问价使用注意事项
3.yml文件的基本数据结构
四、Docker-compose 配置
1.Docker-Compose 配置常用字段
2.Docker Compose常用命令
3.使用Docker-compose创建LNMP环境,并运行Wordpress网站平台
配置nginx的Dockerfile文件
配置mysql的Dockerfile
部署php的Dockerfile
部署docker-compose.yml
浏览器访问测试
一、Docker-compose 概述
- 一个Dockerfile模板文件可以定义一个单独的应用容器
- Docker Compose作为Docker官方产品可以服务编排定义多个容器
二、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)。
三、YML文件格式及编写注意事项
1.yml文件是什么
YAML 是一种标记语言,它可以很直观的展示数据序列化格式,可读性高。类似于 json 数据描述
语言,语法比 json 简单的很多。YAML 数据结构通过缩进来表示,连续的项目通过减号来表示,
键值对用冒号分隔,数组用中括号 [ ] 括起来, hash 用花括号 { } 括起来
2.yml问价使用注意事项
- 大小写敏感
- 通过缩进表示层级关系
- 只能使用空格缩进不能使用tab键
- 可以使用井号键进行注释
- 符号字符都有一个空格 如test:
- 单引号起来的字符,会被当作普通字符串处理。"#&" 双引号里面如果是特殊字符,就表示本意
- '$' 表示普通字符串
- "$" 表示就是$
3.yml文件的基本数据结构
yaml格式文件: 文件名以 .yaml .yml 为后缀,用 空格缩进 表示字段的层级关系
特点:可读性高,易于管理
#一级字段
key1: value1 #一个key只有一个值,值的类型为 纯量
key2:
- value1 #一个key有多个值的纵向格式,值的类型为 列表
- value2
key3: ["value1", "value2"] #一个key有多个值的横向格式,值的类型为 数组
key4:#二级字段subkey1: value1 #用 空格缩进 表示字段的层级关系,同一层字段要靠左对齐subkey2:value2subkey3: #key的值也是键值对,值的类型为 对象#三级字段sskey1: value1sskey2: value2
json格式文件:文件名以 .json 为后缀,用 大括号{} 表示字段的层级关系,每层字段除了最后一个
字段都要用逗号 , 结尾
特点:易于编程语言的api接口解析
#一级字段
{"key1": ["value1"],"key2": ["value2", "value3"],"key3": {#二级字段"subkey1": ["value1"],"subkey2": ["value2"],"subkey3": {#三级字段"sskey1": ["value1"],"sskey2": ["value2"]}}
}key1: 值相当于echo "helloworld"helloworldkey2: | 值相当于echo -e "hello\nworld" #key: | 表示保留文本块中的换行符helloworldkey3: |- 值相当于echo -e "hello\nworld\c"helloworldkey4: |+ 值相当于echo -e "hello\nworld\n"helloworldkey5: > hello 值相当于echo "hello world" #> 会将文本块中的回车替换为空格worldkey1: &a value1 #定义数据锚点,即定义复制的数据,相当于 a="value1"
key2: *a #引用锚点数据,值相当于为 echo $a , key2: "value1"
四、Docker-compose 配置
1.Docker-Compose 配置常用字段
image | 使用本地镜像或从仓库拉取镜像创建容器 |
build | 使用dockerfile现场构建镜像创建容器 |
context | 指定dockerfile文件所在的目录路径 |
dockerfile | 指定dockerfile文件名 |
command | 设置容器的启动命令,会覆盖镜像中的CMD指令 |
container_name | 设置容器名 --name |
environment | 设置环境变量 -e -env |
networks | 设置容器使用的自定义网络和IP --ip |
network_mode | 设置容器的网络模式 --network |
ports | 设置容器端口映射 -p |
volumes | 设置数据卷挂载 -v |
volumes_from | 设置数据卷容器挂载,版本3不支持 --volumes-from |
hostname | 设置容器主机名 -h --hostname |
sysctls | 设置容器的内核参数 --sysctl |
links | 设置容器互联 --link |
privileged | 设置容器拥有root权限 --privileged |
restart | 设置容器重启策略 --restart |
depends_on | 设置容器的依赖关系 |
2.Docker Compose常用命令
docker-compose [-f docker-compose.yml] up -d 根据模板文件创建并后台启动所有容器down 根据模板文件删除所有容器ps 根据模板文件查看所有容器状态start|stop|restart 根据模板文件启动|停止|重启所有容器
3.使用Docker-compose创建LNMP环境,并运行Wordpress网站平台
配置nginx的Dockerfile文件
mkdir lnmp
cd lnmp
mkdir nginx mysql phpvim /opt/lnmp/nginx/Dockerfile
FROM centos:7
RUN yum -y install gcc pcre-devel openssl-devel zlib-devel openssl openssl-devel
ADD nginx-1.22.0.tar.gz /usr/local/src/
RUN useradd -M -s /sbin/nologin nginx
WORKDIR /usr/local/src/nginx-1.22.0
RUN ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module --with-stream_realip_module && make -j 4 && make install
ENV PATH /usr/local/nginx/sbin:$PATH
COPY nginx.conf /usr/local/nginx/conf/
ADD wordpress-6.4.2-zh_CN.tar.gz /usr/local/nginx/html
RUN chmod -R 777 /usr/local/nginx/html
EXPOSE 80
VOLUME ["/usr/local/nginx/html/"]
CMD ["/usr/local/nginx/sbin/nginx","-g","daemon off;"]
配置mysql的Dockerfile
vim /opt/lnmp/mysql/Dockerfile
FROM centos:7
RUN yum -y install ncurses ncurses-devel bison cmake pcre-devel zlib-devel gcc gcc-c++ make && useradd -M -s /sbin/nologin mysql
ADD mysql-boost-5.7.20.tar.gz /usr/local/src
WORKDIR /usr/local/src/mysql-5.7.20/
RUN cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=boost \
-DWITH_SYSTEMD=1 && make -j 4 && make install
COPY my.cnf /etc/my.cnf
EXPOSE 3306
RUN chown -R mysql:mysql /usr/local/mysql && chown mysql:mysql /etc/my.cnf
WORKDIR /usr/local/mysql/bin/
RUN ./mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data && cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/ && systemctl enable mysqld
ENV PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH
VOLUME ["/usr/local/mysql"]
ENTRYPOINT ["/usr/sbin/init"]
部署php的Dockerfile
vim /opt/lnmp/php/Dockerfile
FROM centos:7
RUN yum -y install gd \
libjpeg libjpeg-devel \
libpng libpng-devel \
freetype freetype-devel \
libxml2 libxml2-devel \
zlib zlib-devel \
curl curl-devel \
openssl openssl-devel \
gcc gcc-c++ make pcre-devel && useradd -M -s /sbin/nologin nginx
ADD php-7.1.10.tar.bz2 /usr/local/src
WORKDIR /usr/local/src/php-7.1.10
RUN ./configure \
--prefix=/usr/local/php \
--with-mysql-sock=/usr/local/mysql/mysql.sock \
--with-mysqli \
--with-zlib \
--with-curl \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--with-openssl \
--enable-fpm \
--enable-mbstring \
--enable-xml \
--enable-session \
--enable-ftp \
--enable-pdo \
--enable-tokenizer \
--enable-zip && make -j 4 && make install
ENV PATH /usr/local/php/bin:/usr/local/php/sbin:$PATH
COPY php.ini /usr/local/php/lib
COPY php-fpm.conf /usr/local/php/etc/
COPY www.conf /usr/local/php/etc/php-fpm.d/
EXPOSE 9000
ENTRYPOINT ["/usr/local/php/sbin/php-fpm","-F"]
部署docker-compose.yml
vim docker-compose
version: '3'
services:nginx:hostname: nginxbuild:context: /opt/lnmp/nginx/dockerfile: Dockerfileports:- 1314:80container_name: nginx_servernetworks:lnmp:ipv4_address: 172.111.0.10volumes:- "nginx-data:/usr/local/nginx/html"
#声明挂在卷名称和目录mysql:hostname: mysqlbuild:context: /opt/lnmp/mysqldockerfile: Dockerfileports:- 3306:3306container_name: mysql_servernetworks:lnmp:ipv4_address: 172.111.0.20privileged: true
#给数据库权限。true:虽然登录容器,显示的是root用户,但是它是一个伪管理员
#一旦privileged: true,容器内的root用户和宿主机的root用户,拥有一样的权限
#生产中尽量不给volumes:- "mysql-data:/usr/local/mysql/"php:hostname: phpbuild:context: /opt/lnmp/php/dockerfile: Dockerfileports:- 9000:9000container_name: php_servernetworks:lnmp:ipv4_address: 172.111.0.30volumes:- "nginx-data:/usr/local/nginx/html/"- "mysql-data:/usr/local/mysql/"
networks:lnmp:driver: bridgeipam:config:- subnet: 172.111.0.0/16
volumes:nginx-data:mysql-data:docker-compose -f docker-compose.yml up -d创建完成!
浏览器访问测试
http://192.168.80.100/index.php
http://192.168.80.100/wordpress/index.php
相关文章:
大鲸鱼docker-compose单机容器集群编排工具
目录 一、Docker-compose 概述 二、Docker-compose简介 三、YML文件格式及编写注意事项 1.yml文件是什么 2.yml问价使用注意事项 3.yml文件的基本数据结构 四、Docker-compose 配置 1.Docker-Compose 配置常用字段 2.Docker Compose常用命令 3.使用Docker-compose创建…...
Dify中的高质量索引模式实现过程
思考在什么情况下会使用到高质量索引模式呢?第1种情况是在知识库中上传文档,文档被拆分为段落后需要进行编码(增加);第2种情况是在召回测试的时候,需要对query进行编码(查询);第3种情况是当文档中的段落增加和更新时需要进行编码(增加和更新)。索引模式是针对知识库…...
GO:Socket编程
目录 一、TCP/IP协议族和四层模型概述 1.1 互联网协议族(TCP/IP) 1.2 TCP/IP四层模型 1. 网络访问层(Network Access Layer) 2. 网络层(Internet Layer) 3. 传输层(Transport Layer&#…...
wls2下的centos使用桥接模式连接宿主机网络独立静态ip
前提:wsl2已安装,可正常更新 1.在控制面板中,打开开启或关闭windows功能,将里面的 Hyper-V功能打开,此处涉及重启 2. 按一下win键,输入hy,上面可以看到Hyper-V Manager,点进去 3.选择右边的 Vi…...
R语言实现神经网络ANN
# 常用激活函数 # 自定义Sigmoid函数 sigmod <- function(x){return(1/(1exp(-x))) } # 绘制Sigmoid曲线 x <- seq(-10,10,length.out 100) plot(x,sigmod(x),type l,col blue,lwd 2,xlab NA,ylab NA,main Sigmoid函数曲线)# 自定义Tanh函数 tanh <- function(…...
实战:shell脚本练习
高效编写Bash脚本的技巧 总结了10个实用技巧,帮助提高脚本的效率和可靠性,具体包括: 多写注释:在脚本中添加注释,以帮助理解脚本的不同部分。 当运行失败时使脚本退出:使用set -o errexit或set -e&#x…...
常见排序算法总结
文章目录 比较排序冒泡排序选择排序插入排序归并排序快速排序堆排序希尔排序 非比较排序(桶排序)计数排序基数排序 比较排序 冒泡排序 嵌套循环,每次内层循环执行时,数组的每两个元素交换,将一个最大/小的数排到数组…...
网页HTTP协议 get请求和post请求区别?(HTTP中Get、Post、Put与Delete的区别)(HTTP请求方法、HTTP请求方式、HTTP方法)
文章目录 设计GET、POST、DELETE 等多种请求方法的原因1. 符合语义化设计2. 允许服务器对不同的请求方法进行优化处理3. 提高数据传输的安全性4. 遵循现有的网络架构5. 提高网络通信的效率6. 支持 RESTful API 设计 设计GET、POST、DELETE 等多种请求方法的原因 后端之所以要分…...
攻防世界 re新手模式
Reversing-x64Elf-100 64位ida打开 看if语句,根据i的不同,选择不同的数组,后面的2*i/3选择数组中的某一个元素,我们输入的是a1 直接逆向得到就行 二维字符数组写法:前一个是代表有几个字符串,后一个是每…...
Ajax是什么?如何在HTML5中使用Ajax?
Ajax是什么,它如何工作? Ajax是什么 Ajax,全称Asynchronous Javascript And XML(异步JavaScript和XML),是一种创建交互式网页应用的网页开发技术。它允许网页在不重新加载整个页面的情况下,与…...
Python+Flask+MySQL/Sqlite的个人博客系统(前台+后端管理)【附源码,运行简单】
PythonFlaskMySQL/Sqlite的个人博客系统(前台后端管理)【附源码,运行简单】 总览 1、《个人博客系统》1.1 方案设计说明书设计目标工具列表 2、详细设计2.1 管理员登录2.2 程序主页面2.3 笔记新增界面2.4 文章新增界面2.5 文章/笔记管理界面2…...
【Android性能优化】Android CPU占用率检测原理和优化方向
【Android性能优化】Android CPU占用率检测原理和优化方向 CPU相关知识 CPU占用的基本计算公式 (1 - 空闲态运行时间/总运行时间) * 100% Hz、Tick、Jiffies: Hz:Linux核心每隔固定周期会发出timer interrupt (IRQ 0),HZ是用来定义每一秒有…...
AWS Certified Developer Associate备考笔记
AWS Certified Developer Associate备考笔记 缓慢更新中,如果你也正在关注该考试,请点赞后评论感兴趣的章节,可加快我的更新速度 😃 文章目录 AWS Certified Developer Associate备考笔记一、IAM二、EC2三、EC2 Instance Storage…...
数据质量8个衡量标准
在数据驱动的时代,数据质量对于企业的决策和业务运营至关重要。为了确保数据的有效性和可靠性,我们需要根据一些关键要素来衡量数据的质量。本文将介绍数据质量的8个衡量标准,包括准确性、精确性、真实性、及时性、即时性、完整性、全面性和关…...
Redis 跳跃列表与紧凑列表
Redis 跳跃列表(Skip List) 跳跃列表是一种高效的数据结构,它结合了有序数组和链表的优点,能够在 O(log n) 时间内进行插入、删除和查找操作。Redis 使用跳跃列表来实现有序集合(sorted set)的底层数据结构…...
达梦数据库的系统视图v$arch_status
达梦数据库的系统视图v$arch_status 在达梦数据库(DM Database)中,V$ARCH_STATUS 是一个动态性能视图(Dynamic Performance View),用于显示归档日志的状态信息。这个视图可以帮助数据库管理员监控和管理数…...
【Rust光年纪】Rust 中常用的数据库客户端库:核心功能与使用场景
探秘 Rust 语言下的多种数据库客户端库:从安装到实际应用 前言 在现代的软件开发中,数据库是不可或缺的一部分。为了与数据库进行交互,开发人员需要使用各种数据库客户端来执行操作、构建查询等。本文将介绍一些用于 Rust 语言的常见数据库…...
网络安全防御【防火墙双机热备带宽管理综合实验】
目录 一、实验拓扑图 二、实验要求 三、实验思路: 四、实验步骤: 1、FW3的网络相关配置: 2、FW1的新增配置: 3、交换机LSW6(总公司)的新增配置: 4、双机热备技术配置(双机热…...
19.x86游戏实战-创建MFC动态链接库
免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 本次游戏没法给 内容参考于:微尘网络安全 工具下载: 链接:https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd6tw3 提…...
图论建模技巧搜集
一些经典题目 找可达路径 UVa - 11604 General Sultan 平面图最小割对偶图最短路 UVa - 1376 Animal Run 最小割建模 UVa - 1515 Pool construction 费用流建模 洛谷P3159 [CQOI2012] 交换棋子 一些可以转化为二分图最大权匹配的建模题 UVa1006/LA2238 Fixed Partition Me…...
pytorch学习(九)激活函数
1.pytorch常用激活函数如下: #ReLU激活函数 #Leaky ReLU激活函数 #Sigmoid激活函数 #Tanh激活函数 #Softmax激活函数 #Softplus2.代码 import torch.nn as nn import torch import numpy from torch.utils.tensorboard import SummaryWriterwriter SummaryWriter…...
conda 环境打包与使用
conda 环境导出 使用 Conda 打包环境,可以创建一个可重复使用的环境文件,便于在不同的机器上重新创建相同的环境。以下是具体的步骤: 1. 创建 Conda 环境 如果你还没有创建一个 Conda 环境,可以使用以下命令创建一个新环境&…...
jenkins 插件版本冲突
一、Jenkins安装git parameter 插件重启后报错与临时解决方案 cd /root/.jenkins cp config.xml config.xml.bak vim config.xml <authorizationStrategy class"hudson.security.FullControlOnceLoggedInAuthorizationStrategy"><denyAnonymousReadAcces…...
Python print() 格式化输出
Python print{} 格式化输出 1. print()2. 浮点数 (float)References 1. print() 传递给函数的值称为参数。 引号没有打印在屏幕上,它们只是表示字符串的起止,不是字符串的一部分。可以用这个函数在屏幕上打印出空行,只要调用 print() 就可以…...
【Qt+opencv】计时函数与图像变换
文章目录 前言计算时间函数图像变换旋转镜像缩放 总结 前言 在图像处理和计算机视觉的应用中,我们经常需要对图像进行各种变换,如旋转、缩放、剪切等。同时,为了评估算法的性能,我们也需要对代码的执行时间进行精确的测量。OpenC…...
nodejs下载+react安装
一、nodejs安装 1、nodejs下载 具体安装可参考连接:2023最新版Node.js下载安装及环境配置教程(非常详细)从零基础入门到精通,看完这一篇就够了_nodejs安装及环境配置-CSDN博客 下载地址:Node.js — 下载 Node.js 测…...
linux service小例
linux service 测试 1.创建一个app // myapp.c // 间隔10s写入时间到文件 #include <stdio.h> #include <time.h> #include <unistd.h> // 引入unix标准函数定义,如sleep()int main() {FILE *fp;time_t now;char buffer[80];// 打开文件以追加模…...
iOS 开发包管理之 Swift Package Manager
这是由官方推出,用于管理分发 swift 代码的工具。这个在 Xcode 是天然的存在,就是说我们不用安装就能够直接使用。 File > Add Package Dependencies… 在弹出来窗口选择一些库来导入 又或者点左下角的“” > Add Package Collection… 添加完成…...
【C语言初阶】C语言数组基础:从定义到遍历的全面指南
📝个人主页🌹:Eternity._ ⏩收录专栏⏪:C语言 “ 登神长阶 ” 🤡往期回顾🤡:C语言函数 🌹🌹期待您的关注 🌹🌹 ❀数组 📒1. 什么是数组…...
AI开源战争的真相
引言 在AI技术迅猛发展的今天,开源与闭源之争成为了AI圈内最热的话题之一。大模型免费开放的背后到底隐藏着什么样的真相?这是一个令人困惑的问题。本文将深入探讨开源与闭源之争的历史背景、技术演进以及商业利益的博弈。 开源概念的起源 开源软件的…...
南京高端网站建设工作室/百度搜索引擎推广步骤
web应用程序 本质 socket服务端 浏览器本质是一个socket客户端1. 服务器程序 socket请求 接受HTTP请求,发送HTTP响应。比较底层,繁琐,有专用的服务器软件,如:Apache Nginx2. 应用程序,实现具体逻辑WSGI&…...
石家庄专业做网站/seo网络推广什么意思
一、二叉树最大深度(高度) //求二叉树最大深度/高度(DFS)public int maxDepth1(Node root) {if(rootnull) {//空树高度为0return 0;}int leftDepthmaxDepth1(root.left);//递归计算左子树高度int rightDepthmaxDepth1(root.right);//递归计算右子树高度return Math.max(leftDe…...
服务器建设网站/链接交换平台
需求:动态修改二维码以及标题头像等内容 1.海报(海报标题超过两行省略,副标题超过三行省略,头像圆角) 海报效果如下: 具体代码如下: <template><view class"page"><…...
钉钉免登 wordpress/全网万能搜索引擎
[url]http://bbs.kafan.cn/viewthread.php?tid211671&extrapage%3D1[/url]相信各位一定在为电脑中毒.流氓插件等问题头疼重装系统,一键还原这些解决办法都存在各种不足.传统的杀毒软件面对如今铺天盖地的病毒,***,流氓软件也是只有招架之功.无还手之力.归根结底,我们得想办…...
网页设计与制作实用教程(第3版)/网站结构优化的内容和方法
20150803 Created By BaoXinjian 一、摘要 1. JXL 1.1 JXL优点: Jxl对中文支持非常好,操作简单,方法看名知意。 Jxl是纯javaAPI,在跨平台上表现的非常完美,代码可以再windows或者Linux上运行而无需重新编写 支持Excel …...
网站关键词推广哪家好/搜索引擎营销的主要方式有
2019独角兽企业重金招聘Python工程师标准>>> 一.系统目录结构 1.linux系统目录图 2.目录介绍 /bin:bin是Binary的缩写,该目录下存放的是最常用的命令。/boot:该目录下存放的是启动Linux时使用的一些核心文件,包括一些连…...