Docker-compose 部署

        Docker-compose 部署_第1张图片

一.什么是Docker Compose?
Docker Compose是Docker的一个工具,用于定义和管理多个Docker容器的应用程序。它允许您通过一个单独的文件来定义多个服务、网络和卷,并通过简单的命令来启动、停止和管理整个应用。

Docker Compose使用YAML文件来描述应用程序的组件和配置。在这个YAML文件中,您可以定义每个服务的镜像、端口映射、环境变量、挂载卷、网络设置等。通过使用Docker Compose,您可以将复杂的多容器应用程序定义为一个简单的文本文件,使得应用的部署和维护变得更加方便和可管理。
 

二.Docker Compose的优势
使用Docker Compose有许多优势,包括:

简化应用定义:通过使用YAML文件来定义整个应用程序,您可以将多个服务和配置集中在一个地方,减少了手动操作和配置的复杂性。

快速部署:一旦您定义了应用程序,只需使用一个命令就可以快速部署整个应用,节省了部署时间和工作量。

依赖管理:Docker Compose允许您定义服务之间的依赖关系,确保各个服务在正确的顺序启动,避免了因依赖问题导致的启动失败。

易于扩展:如果您的应用需要扩展,只需修改YAML文件中的服务定义,再次运行命令即可完成扩展,非常方便。

环境隔离:每个服务在Docker容器中运行,实现了环境隔离,保证了应用之间不会相互干扰,提高了安全性。

1. 自定义网络-mynet

创建自定义网络:

docker network create --subnet=172.33.0.0/16 mynet

查看网络信息

docker network list

查看指定网络的详细信息

docker network inspect mynet

删除指定网络

docker network rm mynet

创建容器并测试自定义网络 

docker run -it --name t1 --net mynet \

 --ip 172.18.0.2 --restart=always centos:latest /bin/bash

向docker compose移植

mkdir /docker-compose

docker compose.yml文件的常用手段 

                字段                                                         描述
build  docker   filecontext    指定Dockerfile文件名构建镜像上下文路径
image                          指定镜像
command                   执行命令,覆盖默认命令
container name         指定容器名称,由于容器名称是唯一的,如果指定自定义名称,则无法scale
deploy                        指定部署和运行服务相关配置,只能在Swarm模式使用
environment               添加环境变量
networks                    加入网络
ports                           暴露容器端口,与-p相同,但端口不能低于60
volumes                      挂载宿主机路径或命令卷
restart                          重启策略,默认no,always,no-failure,unless-stoped
hostname                    容器主机名

 MySQL主从集群

  • 创建目录
mkdir -p /usr/local/mysql/conf
  • 进入mysql 配置文件目录
cd /usr/local/mysql/conf
  • 创建配置文件my.cnf
vim /usr/local/mysql/conf/my.cnf 
  • 以下是配置文件内容

 


version:"3"
services:
  test:
    images:mysql/mysql-server:5.7
    networks:
      my_net:
         ipv4_address:172.18.0.0/16
  volumes:
   -/soft/mysql/master/conf/my.cnf:/etc/my.cnf
   -/soft/mysql/master/data:/var/lib/mysql
   -/soft/mysql/master/script:/script
  restart: on-failure
  privileged:true
 environment:
  MYSQL_ROOT_PASSWORD=123456
  networks:
    - my_net
  slave:
    image:mysql/mysql-server:5.7
    volumes:
      - /soft/mysql/slave/conf/my.cnf:/etc/my.cnf
      - /soft/mysql/slave/data:/script
      - /soft/mysql/slave/script
 restart: on-failure #也可以 使用--restart=always \一直
 privileged:true
environment:
  MYSQL_ROOT_PASSWORD=123456
networks:
  my_net:
    driver:bridge
    ipam:
      config:
        - subnet:172.18.0.0/16

 

你可能感兴趣的:(docker,容器,运维)