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
相关推荐
tonngw43 分钟前
【Mac 从 0 到 1 保姆级配置教程 16】- Docker 快速安装配置、常用命令以及实际项目演示
macos·docker·容器·开源·github·docker desktop·orbstack
debug 小菜鸟3 小时前
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
docker·云计算·aws
SpikeKing3 小时前
Server - 使用 Docker 配置 PyTorch 研发环境
pytorch·docker·llm
斯普信云原生组5 小时前
Docker构建自定义的镜像
java·spring cloud·docker
2201_761199045 小时前
k8s4部署
云原生·容器·kubernetes
小柏ぁ5 小时前
calico/node is not ready: BIRD is not ready: BGP not established with xxx
运维·docker·kubernetes
三劫散仙7 小时前
kubernetes jenkins pipeline优化拉取大仓库性能指定分支+深度
容器·kubernetes·jenkins
西京刀客7 小时前
k8s热更新-subPath 不支持热更新
云原生·容器·kubernetes·configmap·subpath
weixin_434936287 小时前
k8S 命令
linux·容器·kubernetes
nuczzz9 小时前
GPU虚拟化
docker·kubernetes·k8s·gpu·nvidia