Docker-MySQL安装

什么是Docker

Docker 是一个用于开发,交付和运行应用程序的开放平台。Docker 使您能够将应用程序与基础架构分开,从而可以快速交付软件。借助 Docker,您可以与管理应用程序相同的方式来管理基础架构。通过利用 Docker 的方法来快速交付,测试和部署代码,您可以大大减少编写代码和在生产环境中运行代码之间的延迟。 Docker 是由一个个容器组成的,每个容器都是由镜像来构建生成的,官方的Docker镜像官网有各种各样的镜像,可以直接拉下来直接进行使用。

下载

第一步先下载docker安装,这里的话不同的系统有不同的方式,windows和mac都是有图形化界面的,linux是需要命令行安装,使用命令行操作的,进入下载地址选择自己当前系统的版本。 这里演示使用的是mac版本

Linux执行curl -fsSL 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 -s)-$(uname -m)“ -o /usr/local/bin/docker-compose 安装docker-compose

安装Docker

1.安装docker 我这里使用的是Mac的Docker图形化版本,其他的安装都是大同小异 在这里插入图片描述

这里将安装包打开后拖到目录中 在这里插入图片描述

2.安装完成后打开docker,点击右上角登录,可以看到这个首页目前是没有运行中的容器的,可以复制中间的命令去执行 来创建一个初始的镜像 在这里插入图片描述

执行了命令后会在镜像仓库中拉去了docker/getting-started这个镜像 在这里插入图片描述

这时候我们可以通过浏览器访问127.0.0.1来查看这个镜像 在这里插入图片描述

这里是初始了一个web页面映射到80端口所以我们可以直接访问到容器内的内容

拉取镜像

接下来去Docker镜像官网下载我们需要安装的mysql对应的镜像.找到对应的镜像拉取命令 在这里插入图片描述

这里搜索后可以看到有很多个mysql的搜索结果,这里选择MySQL官方的镜像 点进去后 点击到Tags栏目 在这里插入图片描述

可以看到这个mysql8.0.25版本的看

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

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

创建docker-compose

首先创建yaml文件,并且创建mysql_conf,mysql_log,mysql_data三个文件夹,分别是配置,日志,数据 下面是目录接口以及yaml文件的内容 在这里插入图片描述

docker-compose.yaml

version: "3"

services:
  mysql-master: 
    image: mysql:8.0.25 // 使用的镜像
    container_name: mysql-test // 生成容器后的名称
    volumes: // 挂载
      - ./mysql_conf/master.conf:/etc/my.conf // 挂在本地配置文件到容器内部使用
      - ./mysql_data/master:/var/lib/mysql // 挂载数据库存储目录,因为容器每次启动都是会重置,所以需要把文件存本机
      - ./mysql_log/master.log:/var/log/mariadb/mariadb.log // 日志文件
    ports:
      - "3309:3306" // 端口映射,mysql默认3306 将我们本机的3309端口映射到容器的3306端口
    environment:
      - MYSQL_ROOT_PASSWORD=wx8805780 // 设置root账号默认密码
      - TZ=Asia/Shanghai // 设置为上海时区 不设置可能会导致日期相差8个小时
    restart: always // 自动重启 总是
    networks: // 设置网络组 
      hczt: // 使用的网络组名称 
        ipv4_address: 172.21.5.1 // 在网络组中的ip 这里必须网段与设置的一样 后缀ip区分
  mysql-slave1:
    image: mysql:8.0.25
    container_name: mysql-test2
    volumes:
      - ./mysql_conf/slave1.conf:/etc/my.conf
      - ./mysql_data/slave1:/var/lib/mysql
      - ./mysql_log/slave1.log:/var/log/mariadb/mariadb.log
    ports:
      - "3310:3306"
    environment:
      - MYSQL_ROOT_PASSWORD=wx8805780
      - TZ=Asia/Shanghai
    restart: always
    networks:
      hczt:
        ipv4_address: 172.21.5.2

networks: // 网络组 
  hczt: // 设置网络组名称
    driver: bridge // 网络模式 桥接模式
    ipam: 
      config:
      - subnet: 172.21.0.0/16 // 设置网络组的网段

mysql 配置文件

[mysqld]
## 同一局域网内注意要唯一
server-id=1
## 是否只读,1 代表只读, 0 代表读写
read-only=0
## 忽略的数据, 指不需要同步的数据库
binlog-ignore-db=mysql

## 开启二进制日志功能,可以随便取(关键)
log-bin=mysql-bin
# 数据文件夹
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# 指定IP
bind 0.0.0.0
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

binlog_format=statement


# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd

[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
sql_mode=STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d

启动

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

点击删除 将容器删除,这样就可以重新执行命令生成一个新的容器了