Docker-compose

Docker-compose

1、概念

容器一键化部署的工具,针对dockerfile,可以按照定制化的模式一键部署dockerfile创建的容器

2、定制:yaml文件

bash 复制代码
mv docker-compose-linux-x86_64 /usr/local/bin/docker-comprose
chmod 777 /usr/local/bin/docker-comprose
docker-comprose --version
# Docker Compose version v2.18.0

3、yaml文件

yaml是一种标记语言,直观的展示数据序列化的一种格式,可读性高

数据格式的结构是通过缩进行表示的

3.1 注意事项:

1.1 大小写敏感,严格区分

1.2 通过缩进表示层级关系

1.3 不能通tab缩进,只能用空格缩进

1.4 #可以表示注释

1.5 符号之后必须缩进一格

1.6 特殊字符必须要用单引号,字符串用双引号表示其本意。

4、yaml格式

数据结构

yaml 复制代码
vim test.yml

name: "xiaodai"
age: 24
isStudet: 'true'/'false'
# 字符串、整数、布尔类型,也可以是小数点

列表结构

表示有序的元素的集合,使用-开头,缩进表示以下文本属于xy102

yaml 复制代码
xy102:
  - xiaodai
  - xiaozhao
  - xiaoqian
# 换行空两格

字典结构

Maps(映射),相当于字典或者对象,用键值对表示

yaml 复制代码
man:
  name: xiaodai
  age: 24
  
# 可以表示多行文本块:  |
shuoming: |
  this is xy102
  xiaodai is  frist
  ta 20 le

5、docker-comprose命令:

命令 作用
ps 基于docker-comprose拉取的镜像生成的容器
up docker-comprose创建和启动容器
scale 创建容器的数量
top 显示容器的进程
logs 看容器的输出日志
stop start restart 停止、启动、重启
down 删除容器、网络、数据卷、镜像

6、yaml部署nginx

yaml 复制代码
vim docker-compose.yml

version: '3'
# 定义docker-comprose文件的版本,2.0之后都是3,顶格写就是全局使用
services: 
# 定义镜像和容器的配置:dockerfile以及镜像
  nginx: 
    container_name: web1
    # 定义容器的名称是web1
    hostname: nginx1
    # 定义创建好之后,容器的主机名
    build:
    # 构建dockerfile
      context: /opt/nginx
      # 声明上下文,上文构建dockerfile,下文是context,告诉你dockerfile的路径
      dockerfile: Dockerfile
    ports:
    # 声明宿主机和容器的端口映射
      - 80:80
      - 443:443
    networks:
    # 指定容器的ip地址
      mynet:
        ipv4_address: 172.18.0.10
    volumes:
    # 创建容器的挂载卷
      - /opt/nhtml:/usr/local/nginx/html/
networks:
# 创建自定义网络
  mynet:
    driver: bridge
    ipam:
      config:
        - subnet: 172.18.0.0/16
:wq!
bash 复制代码
docker-compose -f docker-compose.yml up -d

# docker-compose 使用docker-compose 一键编排容器
# -f 使用模版文件,必须是.yml结尾
# up 启动
# -d 后台运行
yaml 复制代码
vim docker-compose.yml

version: '3'
services: 
  nginx: 
    container_name: web2
    hostname: nginx2
    build:
      context: /opt/nginx
      dockerfile: Dockerfile
    ports:
      - 81:80
      - 444:443
    networks:
      opt_mynet:
        ipv4_address: 172.18.0.20
    volumes:
      - /opt/nhtml:/usr/local/nginx/html/
networks:
  opt_mynet:
    external: true
:wq!

7、yaml部署lnmp

yaml 复制代码
vim  docker-comprose.yml

version: '3'
services:
  nginx:
    hostname: nginx
    container_name: nginx_server
    build:
      context: /opt/nginx
      dockerfile: Dockerfile
    ports:
      - 80:80
      - 443:443
    networks:
      lnmp:
        ipv4_address: 172.111.0.10
    volumes:
      - /opt/nginx:/opt/docker-nginx
    
    mysql:
      hostname: mysql
      container_name: mysql_server
      build:
        context: /opt/mysql
        dockerfile: Dockerfile
      ports:
        - 3306:3306
      networks:
        lnmp:
          ipv4_address: 172.111.0.20
      privileged: true
      volumes:
        - /opt/mysql:/opt/docker-mysql
        
    php:
      hostname: php
      container_name: php_server
      build:
        context: /opt/php
        dockerfile: Dockerfile
      ports:
        - 9000:9000
      networks:
        lnmp:
          ipv4_address: 172.111.0.30
        volumes_from:
          - "nginx"
          - "mysql"
networks:
  lnmp:
    driver: bridge
    ipam:
      config:
        - subnet: 172.111.0.0/24
:wq!

docker ps  
docker exec -it php_server bash
cd /usr/local   # 查看是否出现nginx和mysql
cd /nginx/html   # 查看是否出现50x.html、index.html、wordpress
cd /usr/local/mysql  # 查看是否出现mysql.sock

删除网络

复制代码
docker network ls

docker network rm -f mynetwork
bash 复制代码
docker-compose build --no-cache 
#清理缓存,必须是docker-compose.yml
相关推荐
杨浦老苏9 小时前
家庭实验室监控仪表盘HomeLab-Monitor
运维·docker·监控·群晖
开发者联盟league12 小时前
使用k8s安装Sonarqube
云原生·容器·kubernetes
ai产品老杨13 小时前
架构师深剖:基于 Docker 容器化与边缘计算的 AI 视频管理平台——支持 GB28181/RTSP 多协议接入与全源码交付
人工智能·docker·边缘计算
qq_1851986915 小时前
Docker 历史版本
docker
m0_7381207215 小时前
渗透测试基础——基于Docker的Rsync服务靶场搭建与原理讲解
运维·服务器·网络·安全·web安全·docker·容器
杨浦老苏19 小时前
PDF文档管理平台PDFManager
docker·pdf·工具·群晖
ai产品老杨19 小时前
解耦异构安防:基于 Docker 与边缘计算的 AI 视频管理平台,如何实现 GB28181/RTSP 统一接入与全源码交付
人工智能·docker·边缘计算
极客先躯20 小时前
高级java每日一道面试题-2026年02月09日-实战篇[Docker]-Docker 容器有哪些安全风险?如何缓解?
java·运维·网络·安全·docker·容器
yuanzhengme20 小时前
Ollama【部署 07】搭建本地智能体的简单说明(局域网离线部署Ollama+模型迁移+Docker部署AnythingLLM)
运维·docker·容器·大模型·ollama·本地智能体
想要成为计算机高手20 小时前
用meta quest 3 遥操宇树机器人-xr_teleoperate 复现(含docker安装与配置方式)
人工智能·docker·机器人·xr·g1·具身智能