Compose自定义网络&compose自定义部署

一、Compose前言

Compose是一个用于定义和运行多容器Docker应用程序的工具。使用Compose,可以使用YAML文件来配置应用程序的服务

文章来源地址https://uudwc.com/A/3w16O

二、自定义网络

1.定义自定义网络-mynet

实现思路:创建自定义网络,并以自定义网络创建容器,最后迁移到docker-compose中一键启动

 1.1 创建自定义网络

$ docker network create --subnet=172.18.0.1/24 mynet

 1.2 查看网络信息

$ docker network list

1.3 查看指定网络的详细信息 

$ docker network inspect mynet

1.4 删除指定网络 

$ docker network rm mynet

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

$ docker run -it --name t1 --net mynet \
     ip 172.18.0.2 --restart=always centos:latest /bin/bash

 1.6 向docker compose移植

$ mkdir /docker-compose
$ rz

# 版本号
version: '3'
# 定义服务
services:
  # 服务名
  test:
    # 容器名称
    container_name: test
    # 镜像
    image: centos:latest
    # 重启
    restart: always
    # 提供伪终端
    tty: true
    # 网络
    networks:
      mynetwork:
        ipv4_address: 172.19.0.2
# 定义所需要的网络
networks:
  mynetwork:
    driver: bridge
    ipam:
      config:
        - subnet: 172.19.0.0/16

 7.后台启动服务

 $ docker-compose up -d  //启动
 $ docker-compose stop   //停止
 $ docker-compose down   //下线及停止+删除

 请在docker-compose.yml文件所在目录去执行,不然将报错!

三、.部署mysql主从集群

1.mysql-master主库

1.1 在宿主机中创建相关目录,用于挂载容器的相关数据

$ mkdir -p /data/mysql-master/{conf,data}

1.2 上传主数据库容器的配置文件my.cnf到/data/mysql-master/conf目录下 

$ cd /data/mysql-master/conf
$ rz 

 将课件mysql/mysql-master目录下的conf上传

1.3 启动master节点

$ docker run \
          --name mysql-master \
          --net mynet \
          --ip 172.18.0.3 \
          -v /data/mysql-master/conf/my.cnf:/etc/my.cnf \
          -v /data/mysql-master/data:/var/lib/mysql \
          --privileged=true \
          --restart=always \
          -e MYSQL_ROOT_PASSWORD=123456 \
          -d mysql/mysql-server:5.7 

注1:-p 3306:3306 可以不要 
      注2:参数说明,请见附录四 

1.4 删除mysql-master容器并向docker compose移植 

$ docker stop $(docker ps -aq) && docker rm $(docker ps -aq)

 

# 版本号
version: '3'
# 定义服务
services:
  # 服务名
  mysql-master:
    # 容器名称
    container_name: mysql-master
    # 镜像
    image: mysql/mysql-server:5.7
    # 重启
    restart: always
    # 提供伪终端
    tty: true
    # root具备管理员权限
    privileged: true
    # 环境变量
    environment:
      MYSQL_ROOT_PASSWORD: 123456
    # 数据卷(目录映射)
    volumes:
      - /data/mysql-master/conf/my.cnf:/etc/my.cnf
      - /data/mysql-master/data:/var/lib/mysql
    # 网络
    networks:
      mynetwork:
        ipv4_address: 172.19.0.3
# 定义所需要的网络
networks:
  mynetwork:
    driver: bridge
    ipam:
      config:
        - subnet: 172.19.0.0/16

 1.5 进入主库容器配置远程连接

进入mysql容器

$ docker-compose exec --index=1 mysql-master /bin/sh
    或者

$ docker exec -it mysql-master /bin/sh

 注1:如果执行目录下的docker-compose配置文件采用的是自定义命名方式,请使用如下命名进入容器:

$ docker-compose -f docker-compose-v2.yml exec --index=1 mysql-master /bin/sh
    或者
$ docker exec -it mysql-master /bin/sh

登录mysql服务器,之后输入mysql密码:123456 

mysql -u root -p

 给用户授权并更新

grant all privileges on *.* to root@'%' identified by '123456';
    flush privileges;

原文地址:https://blog.csdn.net/wangxinlan1/article/details/130075037

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请联系站长进行投诉反馈,一经查实,立即删除!

上一篇 2023年09月24日 18:44
docker系列--解决hyper-v导致docker无法启动问题
下一篇 2023年09月24日 18:45