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
相关推荐
网络研究院1 小时前
Am I Isolated:一款安全态势基准测试工具
容器·工具·基准测试·安全态势
涔溪2 小时前
Docker简介
spring cloud·docker·eureka
内核程序员kevin3 小时前
在Linux环境下使用Docker打包和发布.NET程序并配合MySQL部署
linux·mysql·docker·.net
kayotin4 小时前
Wordpress博客配置2024
linux·mysql·docker
颜淡慕潇6 小时前
【K8S问题系列 | 9】如何监控集群CPU使用率并设置告警?
后端·云原生·容器·kubernetes·问题解决
运维&陈同学6 小时前
【模块一】kubernetes容器编排进阶实战之k8s基础概念
运维·docker·云原生·容器·kubernetes·云计算
信子姚青6 小时前
K8s使用nfs
容器
葡萄皮Apple6 小时前
[CKS] K8S RuntimeClass SetUp
java·容器·kubernetes
mit6.8246 小时前
[Docker#4] 镜像仓库 | 部分常用命令
linux·运维·docker·容器·架构
诡异森林。9 小时前
Docker--Docker是什么和对Docker的了解
运维·docker·容器