Docker 是一个用于开发,交付和运行应用程序的开放平台。Docker 使您能够将应用程序与基础架构分开,从而可以快速交付软件。借助 Docker,您可以与管理应用程序相同的方式来管理基础架构。通过利用 Docker 的方法来快速交付,测试和部署代码,您可以大大减少编写代码和在生产环境中运行代码之间的延迟。
    Docker 是由一个个容器组成的,每个容器都是由镜像来构建生成的,官方的Docker镜像官网有各种各样的镜像,可以直接拉下来直接进行使用。
    第一步先下载docker安装,这里的话不同的系统有不同的方式,windows和mac都是有图形化界面的,linux是需要命令行安装,使用命令行操作的,进入下载地址选择自己当前系统的版本。
    这里演示使用的是mac版本

    Linux执行curl -fsSL [https://get.docker.com](https://get.docker.com) | bash -s docker --mirror Aliyun进行安装,因为这里还使用到了Docker-compose,那么我们还得安装docker-compose,Mac的图形化是已经带有不需要在额外安装的
    执行
    $ sudo curl -L"[https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname](https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname) -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    安装docker-compose

    1.安装Docker
    我这里使用的是Mac的Docker图形化版本,其他的安装都是大同小异
    image.png
    这里将安装包打开后拖到目录中
    image.png
    2.安装完成后打开docker,点击右上角登录,可以看到这个首页目前是没有运行中的容器的,可以复制中间的命令去执行 来创建一个初始的镜像
    image.png
    执行了命令后会在镜像仓库中拉去了docker/getting-started这个镜像

    image.png
    这时候我们可以通过浏览器访问127.0.0.1来查看这个镜像
    image.png
    这里是初始了一个web页面映射到80端口所以我们可以直接访问到容器内的内容

    1. 接下来去Docker镜像官网下载我们需要安装的mysql对应的镜像.找到对应的镜像拉取命令
      image.png
      这里搜索后可以看到有很多个mysql的搜索结果,这里选择MySQL官方的镜像
      点进去后 点击到Tags栏目
      image.png
      可以看到这个mysql8.0.25版本的看

    在命令行中执行docker pull mysql:8.0.25将镜像从远端拉下来,等待命令执行结束这时候我们本地就有了mysql的镜像文件了

    因为我们使用的是docker-compose作为一个容器管理 启动和配置,那么需要编写docker-compose.yaml 这个配置文件,来创建我们需要用到的容器,并且设置相应的配置

    首先创建yaml文件,并且创建mysql_conf,mysql_log,mysql_data三个文件夹,分别是配置,日志,数据
    下面是目录接口以及yaml文件的内容
    image.png

    docker-compose.yaml

    1. version: "3"
    2. services:
    3. mysql-master:
    4. image: mysql:8.0.25 // 使用的镜像
    5. container_name: mysql-test // 生成容器后的名称
    6. volumes: // 挂载
    7. - ./mysql_conf/master.conf:/etc/my.conf // 挂在本地配置文件到容器内部使用
    8. - ./mysql_data/master:/var/lib/mysql // 挂载数据库存储目录,因为容器每次启动都是会重置,所以需要把文件存本机
    9. - ./mysql_log/master.log:/var/log/mariadb/mariadb.log // 日志文件
    10. ports:
    11. - "3309:3306" // 端口映射,mysql默认3306 将我们本机的3309端口映射到容器的3306端口
    12. environment:
    13. - MYSQL_ROOT_PASSWORD=wx8805780 // 设置root账号默认密码
    14. - TZ=Asia/Shanghai // 设置为上海时区 不设置可能会导致日期相差8个小时
    15. restart: always // 自动重启 总是
    16. networks: // 设置网络组
    17. hczt: // 使用的网络组名称
    18. ipv4_address: 172.21.5.1 // 在网络组中的ip 这里必须网段与设置的一样 后缀ip区分
    19. mysql-slave1:
    20. image: mysql:8.0.25
    21. container_name: mysql-test2
    22. volumes:
    23. - ./mysql_conf/slave1.conf:/etc/my.conf
    24. - ./mysql_data/slave1:/var/lib/mysql
    25. - ./mysql_log/slave1.log:/var/log/mariadb/mariadb.log
    26. ports:
    27. - "3310:3306"
    28. environment:
    29. - MYSQL_ROOT_PASSWORD=wx8805780
    30. - TZ=Asia/Shanghai
    31. restart: always
    32. networks:
    33. hczt:
    34. ipv4_address: 172.21.5.2
    35. networks: // 网络组
    36. hczt: // 设置网络组名称
    37. driver: bridge // 网络模式 桥接模式
    38. ipam:
    39. config:
    40. - subnet: 172.21.0.0/16 // 设置网络组的网段

    mysql 配置文件

    1. [mysqld]
    2. ## 同一局域网内注意要唯一
    3. server-id=1
    4. ## 是否只读,1 代表只读, 0 代表读写
    5. read-only=0
    6. ## 忽略的数据, 指不需要同步的数据库
    7. binlog-ignore-db=mysql
    8. ## 开启二进制日志功能,可以随便取(关键)
    9. log-bin=mysql-bin
    10. # 数据文件夹
    11. datadir=/var/lib/mysql
    12. socket=/var/lib/mysql/mysql.sock
    13. # 指定IP
    14. bind 0.0.0.0
    15. # Disabling symbolic-links is recommended to prevent assorted security risks
    16. symbolic-links=0
    17. binlog_format=statement
    18. # Settings user and group are ignored when systemd is used.
    19. # If you need to run mysqld under a different user or group,
    20. # customize your systemd unit file for mariadb according to the
    21. # instructions in http://fedoraproject.org/wiki/Systemd
    22. [mysqld_safe]
    23. log-error=/var/log/mariadb/mariadb.log
    24. pid-file=/var/run/mariadb/mariadb.pid
    25. sql_mode=STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION
    26. #
    27. # include all files from the config directory
    28. #
    29. !includedir /etc/my.cnf.d

    文件配置成功后,命令行打开到docker-compose.yaml的根目录下
    执行docker-compose up来编译docker-compose.yaml文件创建容器 这样启动的话是命令行直接输出内容,窗口关闭容器就会暂停那么需要开启守护进程在后台运行,执行docker-compose up -d开启守护进程,如果需要修改容器重启 那么执行docker-compose down来关闭容器,如果是修改了文件需要重新生成容器,那么需要将已经生成的容器删除掉,图形化界面中打开
    image.png
    点击删除 将容器删除,这样就可以重新执行命令生成一个新的容器了