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
相关推荐
jingshaoqi_ccc9 小时前
ubuntu 24下面安装docker
ubuntu·docker·eureka
关关长语10 小时前
Vue本地部署包快速构建为Docker镜像
前端·vue.js·docker
水滴与鱼11 小时前
DOCKER制作ROS运行的镜像文件
运维·docker·容器
洒家肉山大魔王13 小时前
Kubernetes中Pod 处于 CrashLoopBackOff 状态(生产环境)
linux·容器·kubernetes·pod·pod循环重启
杨浦老苏14 小时前
安全的消息传递和协作工具Virola Messenger
docker·即时通讯·群晖·im
Lynnxiaowen14 小时前
今天我们学习kubernetes内容Ingress资源对象
学习·容器·kubernetes
jason成都15 小时前
emqx的docker部署
运维·docker·容器
mixboot16 小时前
docker 国内镜像源
docker·镜像源
谷粒.16 小时前
云原生时代的测试策略:Kubernetes环境下的测试实践
运维·网络·云原生·容器·kubernetes
java_logo17 小时前
Milvus GUI ATTU Docker 容器化部署指南
运维·数据库·docker·容器·eureka·milvus