Docker-compose单机容器编排

YML文件是什么?

YAML文件是一种标记语言,以竖列的形式展示序列化的数据格式。可读性很高类似于json格式。语法简单。

YAML通过缩进来表示数据结构,连续的项目用-符号来表示。

YML文件使用的注意事项

1、 大小写敏感

2、 通过缩进表示层级关系

3、 只能使用空格缩进不能使用tab键

4、 可以使用井号键进行注释

5、 符号字符都有一个空格 如test:

6、 单引号起来的字符,会被当作普通字符串处理。"#&" 双引号里面如果是特殊字符,就表示本意

'$':表示普通字符串

"$":表示就是$

YML文件的基本数据结构

声明变量(标量,单个的,不可再分的值 字符串,整数,布尔类型)

name: zyg
age: 20
tall: yes
handsan: yes
wan: true

list(列表)

表示有序的元素集合

class:
  - zyg
  - hmbb
  - shandi

键值对映射

声明一个键值用键值对表示

声明一个大的值

Xiebaowang:
  Name:zyg
  Age:20
Xiebaowang1:
  Name:hmbb
  Age:18

注释

#
表示这一行不会被运行

引用

Xiebaowang:&id1
  Name:zyg
  Age:20
Xiebaowang1:*id1

用&来定义锚点,用*来进行引用

字符串引号

Name: 'zyg'
Name: "zyg"
Name: '$'
#表示字符串,打印出来是¥
Name: "$"
#就表示$的本意

Docker-compose单机容器编排

Docker-compose的核心就是yml文件,可以定义容器的一切,通过yml配置直接运行容器

Docker-compose既可以基于Dockerfile,也可以基于镜像,一键式拉起镜像和容器

docker主要服务于单节点,没有统一对外提供服务的端口和配置。docker一般是内网访问,无需使用https

如果要对外以集群和分布式的方式提供访问的端口k8s+ingress

Docker-compose的常用命令

运行docker-compose只能在有docker.yml配置文件的目录内执行

build
#构建服务
ps
#列出由docker-compose编排出来的容器
up
#创建和启动容器
top
#显示容器的进程
logs
#查看容器的输出日志
down
#删除容器、网络、数据卷
exec
#在容器中执行命令
stop/start/restart
#停止、启动、重启
scale
#指定启动的容器数量(副本)

基于Docker-compose部署LNMP

配置nginx的Dockerfile文件 

mkdir lnmp
cd lnmp
mkdir nginx mysql php

vim /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: nginx
    build:
      context: /opt/lnmp/nginx/
      dockerfile: Dockerfile
    ports:
      - 1314:80
    container_name: nginx_server
    networks:
      lnmp:
        ipv4_address: 172.111.0.10
    volumes:
      - "nginx-data:/usr/local/nginx/html"
#声明挂在卷名称和目录
  mysql:
    hostname: mysql
    build:
      context: /opt/lnmp/mysql
      dockerfile: Dockerfile
    ports:
      - 3306:3306
    container_name: mysql_server
    networks:
      lnmp:
        ipv4_address: 172.111.0.20
    privileged: true
#给数据库权限。true:虽然登录容器,显示的是root用户,但是它是一个伪管理员
#一旦privileged: true,容器内的root用户和宿主机的root用户,拥有一样的权限
#生产中尽量不给
    volumes:
      - "mysql-data:/usr/local/mysql/"
  php:
    hostname: php
    build:
      context: /opt/lnmp/php/
      dockerfile: Dockerfile
    ports:
      - 9000:9000
    container_name: php_server
    networks:
      lnmp:
        ipv4_address: 172.111.0.30
    volumes:
      - "nginx-data:/usr/local/nginx/html/"
      - "mysql-data:/usr/local/mysql/"
networks:
  lnmp:
    driver: bridge
    ipam:
      config:
        - subnet: 172.111.0.0/16
volumes:
  nginx-data:
  mysql-data:

docker-compose -f docker-compose.yml up -d

创建完成!

wordpress页面操作同上一篇文章:

https://blog.csdn.net/m0_75209491/article/details/134919206?spm=1001.2014.3001.5501

总结

docker-compose是单机容器编排工具,可以实现一键式的拉取镜像和创建容器

Yml文件的格式:

version: '3'
#声明解释器。声明代码的版本
services:
#声明服务。可以有多个services
networks:
#写在服务配置,声明容器的IP地址
#写在大框架里面,创建网段
volumes:
#声明挂载卷
volumes:
nginx nginx-data:/usr/local/nginx

volumes:
  nginx-data:
  mysql-data:

docker-compose的核心就是yml文件,就是把docker run的命令写成代码。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

代码随想录刷题题Day11

刷题的第十一天,希望自己能够不断坚持下去,迎来蜕变。😀😀😀 刷题语言:C / Python Day11 任务 ● 理论基础 ● 递归遍历 ● 迭代遍历 ● 统一迭代 1 二叉树理论基础 1.1 二叉树的种类 (1&…

Linux----内核及发行版

1. Linux内核 Linux内核是操作系统内部操作和控制硬件设备的核心程序,它是由芬兰人林纳斯开发的。 内核效果图: 说明: 真正操作和控制硬件是由内核来完成的,操作系统是基于内核开发出来的。 2. Linux发行版 是Linux内核与各种常用软件的组合产品&am…

这些Pads技术问题,你还在继续犯错吗?

随着时代发展,Mentor Pads很快成为国内半导体公司的常用EDA软件之一,也就是说起码有数万个电子工程师在使用Pads设计PCB,当然也有很多工程师在使用Pads时遇到了很多问题,下面来看看有哪些技术问题仍然还在继续犯? 1、走…

9:00面试,9:05就出来了,问的问题有点变态。。。

从小厂出来,没想到在另一家公司又寄了。 到这家公司开始上班,加班是每天必不可少的,看在钱给的比较多的份上,就不太计较了。没想到12月一纸通知,所有人不准加班,加班费不仅没有了,薪资还要降40…

1840_emacs org-mode babel的语言支持

Grey 全部学习内容汇总: GitHub - GreyZhang/g_org: my learning trip for org-mode 1840_emacs org-mode babel的语言支持 主题由来介绍 Babel是org-mode中支持文学式编程以及可重现研究的一个核心模块,之前看过这个插件的优点是功能完善且支持的语…

20分钟部署ChatGLM3-6B

准备工作 1.下载源代码: https://github.com/THUDM/ChatGLM3 2.下载预训练模型: https://modelscope.cn/models/ZhipuAI/chatglm3-6b/files 可以创建一个py文件,直接使用如下代码下载到本地: from modelscope.hub.snapshot_dow…

出现 Error:Unable to access jarfile xxxx\target\nacos-server.jar 解决方法

目录 1. 问题所示2. 原理分析3. 解决方法1. 问题所示 执行Nacos中的startup.cmd的时候出现闪退,于是在该脚本的最后一行添加pause,查看因为什么原因闪退 出现的bug如下所示:Error:Unable to access jarfile xxxx\target\nacos-server.jar 截图如下所示: 查看内部文件夹,…

壹家人温暖宁夏中卫,34个孩子收到壹基金温暖包

这个12月,2023年度壹基金温暖包在宁夏中卫的发放活动顺利开展,镇罗中学的4个孩子和山羊场小学28个孩子领到了这份温暖的冬日礼物,后续还有丰台村2个孩子也会领到这份冬天的礼物。 2023年壹基金温暖包共筹集温暖包34个,经过我们…

Linux基本操作指令

哈喽小伙伴们,从这篇文章开始,在学习数据结构的同时,我们开启一个新的篇章——Linux操作系统的学习,这将会是又一个新的开始,希望小伙伴们能够认真细心,不要掉队哦。 目录 一.什么是Linux 二.为什么要学习…

QT用户界面隐藏管理员界面部分功能

效果预览 QT用户界面隐藏管理员界面部分功能 GITHUB网站 QT版本 qmake QT core gui sqlGitHub代码获取链接 GitHub代码获取链接

HAT(CVPR 2023):Hybrid Attention Transformer for Image Restoration

HAT ​ 论文地址:HAT: Hybrid Attention Transformer for Image Restoration ​ 代码地址:XPixelGroup/HAT: CVPR2023 - Activating More Pixels in Image Super-Resolution Transformer 摘要 ​ 通过归因分析attribution analysis method - Local …

智慧燃气让城市能源系统高效运行

关键词:智慧燃气、燃气数字化、智慧燃气平台、智慧燃气解决方案、智慧燃气系统 随着我国城镇燃气行业的发展,燃气行业管理及服务从简单的手工运作阶段迈入数字燃气阶段,大量采用信息化手段管理燃气业务,智慧燃气应运而生。它既是…

Web漏洞分析-文件解析及上传(上)

随着互联网的迅速发展,网络安全问题变得日益复杂,而文件解析及上传漏洞成为攻击者们频繁攻击的热点之一。本文将深入研究文件解析及上传漏洞,通过对文件上传、Web容器IIS、命令执行、Nginx文件解析漏洞以及公猫任意文件上传等方面的细致分析&…

k8s-Pod

1、Pod 简介: (1) 概念: Pod 是 Kubernetes 中创建和管理的,最小的可部署的计算单元。Pod中存储了一组(一个或多个)容器,以及怎样运行这些容器的声明,这些容器共享存储、网络和环境&#xff0…

简易的JS逆向解码

在实战的漏洞挖掘中阅读JS有以下几个作用: 1.JS中存在插件名字,根据插件找到相应的漏洞直接使用 通过控制台大致阅读网站JS代码发现此网页引用了北京的一家公司的代码,并且使用了h-net的框架,接下来我们可以百度这家公司或者是这…

智能优化算法应用:基于水循环算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于水循环算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于水循环算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.水循环算法4.实验参数设定5.算法结果6.参考文…

【精选】SpringMVC简介及其执行流程,参数获取方式

SpringMVC简介 MVC模型 MVC全称Model View Controller,是一种设计创建Web应用程序的模式。这三个单词分别代表Web应用程序的三个部分: Model(模型):指数据模型。用于存储数据以及处理用户请求的业务逻辑。在Web应用中&…

C#基础——语法学习

C#的基本语法 在介绍基本语法之前我们先来大概讲一下创建好的这些文件都是做什么的 .sln文件:将项目和解决方案项结合到一起 .vs文件夹:用来存储当前解决方案中关于用户的设置和自定义项,比如断点,主题等。(一般都将其…

短信打开小程序

获取 URL Scheme | 微信开放文档 静态网站 H5 跳小程序 | 微信开放文档

阿里云SMC迁移RedHat/CentOS 5 内核升级

阿里云SMC迁移RedHat/CentOS 5 内核升级 1. 起因 服务器需要迁移上阿里云,有几台服务器用的是Redhat 5.x,在使用SMC进行迁移时出现以下报错. [2023-12-13 09:50:55] [Error] Check System Info Failed, codeS16_111, msgGet OS Info Failed: [error] grub is too old for C…