分类: Docker

记录关于docker一些常用的配置

  • ARM架构下安装mysql5.7

    ARM架构下安装mysql5.7

    场景:arm架构下,mysql只支持8.0 ,mysql5.7不支持,采用docker镜像模式安装

    docker pull biarms/mysql:5.7.30-linux-arm64v8 #支持arm架构的mysql 5.7镜像包

    1、拉取镜像

    docker pull biarms/mysql:5.7.30-linux-arm64v8

    2、创建mysql容器目录

    mkdir -p /data/mysql/{conf,data,logs}

    3、新建my.cnf配置文件

    [mysql]
    
    default-character-set=utf8
    
    socket=/var/lib/mysql/mysql.sock
    
    [mysqld]
    # 关闭二进制日志
    
    skip-log-bin
    
    #mysql5.7以后的不兼容问题处理
    
    sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
    
    datadir=/var/lib/mysql
    
    socket=/var/lib/mysql/mysql.sock
    
    symbolic-links=0
    
    max_connections=200
    
    character-set-server=utf8
    
    default-storage-engine=INNODB
    
    lower_case_table_names=1
    
    max_allowed_packet=16M
    
    default-time_zone='+8:00'
    
    [mysqld_safe]
    
    log-error=/var/log/mysql/mysql.log
    
    pid-file=/var/run/mysql/mysql.pid
    
    !includedir /etc/mysql/conf.d/
    
    !includedir /etc/mysql/mysql.conf.d/

    4、运行容器

    docker run -p 3306:3306 --name mysql5.7 \
    -v ./data/mysql/conf/my.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf \
    -v ./data/mysql/logs:/var/log/mysql \
    -v ./data/mysql/data:/var/lib/mysql \
    -e MYSQL_ROOT_PASSWORD=root \
    -d biarms/mysql:5.7.30-linux-arm64v8

    5、说明

    -p 3306:3306 容器内部端口和服务器端口映射关联

    –privileged=true 设置mysql用户,否则外部不能使用root用户登录

    -v /data/mysql/conf/my.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf 服务器的

    /data/mysql/conf/my.cnf配置映射到docker的my.cnf

    -v /data/mysql/data:/var/lib/mysql 映射数据库的数据目录,避免docker删除重新运行mysql容器,导致数据丢失

    -e MYSQL_ROOT_PASSWORD=123456 设置root账号的密码

    –name mysql mysql:5.7 从docker镜像mysql:5.7启动一个容器,并设置容器的名称为mysql

    –character-set-server=utf8mb4 –collation-server=utf8mb4_general_ci 设置数据库默认编码

    原文链接:https://blog.csdn.net/qsm44593342/article/details/132775772

  • docker中mysql关闭二进制日志

    docker中mysql关闭二进制日志

    1.创建my.cnf文件

    # 删除旧的 my.cnf 文件(如果存在)
    rm -f my.cnf
    
    # 创建新的 my.cnf 文件并写入内容
    echo -e "[mysqld]\nskip-log-bin" > my.cnf
    
    # 确保文件权限正确
    chmod 644 my.cnf

    2.将my.cnf映射出来

    services:
      mysql:
        image: mysql
        container_name: mysql
        restart: always
        ports:
          - "3306:3306"
        volumes:
          - ./mysql:/var/lib/mysql
          - ./my.cnf:/etc/mysql/my.cnf
        environment:
          MYSQL_ROOT_PASSWORD: xxxxxxx
          MYSQL_USER: xiaogang
          MYSQL_PASSWORD: xxxxxxx
    

    3.重新启动docker容器

    docker-compose down
    docker-compose up -d
    

    4.进入容器验证

    docker exec -it mysql mysql -u root -p

    然后输入密码进入mysql中

    5.验证

    SHOW BINARY LOGS;
    
    #结果:ERROR 1381 (HY000): You are not using binary logging
    
    SHOW VARIABLES LIKE 'log_bin';
    
    #结果:OFF
  • docker-compose:mysql+redis+phpmyadmin

    docker-compose:mysql+redis+phpmyadmin

    创建my.cnf文件

    # 删除旧的 my.cnf 文件(如果存在)
    rm -f my.cnf
    
    # 创建新的 my.cnf 文件并写入内容
    echo -e "[mysqld]\nskip-log-bin" > my.cnf
    
    # 确保文件权限正确
    chmod 644 my.cnf
    

    docker-compose.yml文件

    version: '3'
    services:
      mysql:
        image: mysql
        container_name: mysql
        restart: always
        ports:
          - "3306:3306"
        volumes:
          - ./mysql:/var/lib/mysql
          - ./my.cnf:/etc/mysql/my.cnf
        environment:
          MYSQL_ROOT_PASSWORD: root密码
          MYSQL_USER: xiaogang
          MYSQL_PASSWORD: 用户密码
    
      redis:
        image: redis:alpine
        container_name: redis
        restart: always
        ports:
          - "6379:6379"
        volumes:
          - ./redis:/data
    
      phpmyadmin:
        image: phpmyadmin:latest
        container_name: myadmin
        restart: always
        ports:
          - "13306:80"
        environment:
          PMA_ARBITRARY: 1

    运行容器

    docker-compse up -d