• docker启动镜像挂载本地配置


     Docker挂载主机目录访问如果出现cannot open directory .: Permission denied
    解决办法:在挂载目录后多加一个--privileged=true参数即可
     
    如果是CentOS7安全模块会比之前系统版本加强,不安全的会先禁止,所以目录挂载的情况被默认为不安全的行为,
    在SELinux里面挂载目录被禁止掉了额,如果要开启,我们一般使用--privileged=true命令,扩大容器的权限解决挂载目录没有权限的问题,也即
    使用该参数,container内的root拥有真正的root权限,否则,container内的root只是外部的一个普通用户权限。

    docker 挂载redis

    1、以docker启动redis挂载配置文件以及备份数据文件为例

     (60条消息) docker部署redis,并实现本地redis.conf配置加载_世外平常人的博客-CSDN博客_docker redis redis.conf

    docker挂载mysql 开启容器卷

    1、下载镜像文件

    docker pull mysql:5.7

    2、创建实例并启动

    docker run -p 3306:3306 --name mysql  \

    -v /mydata/mysql/log:/var/log/mysql \

    -v /mydata/mysql/data:/var/lib/mysql \

    -v /mydata/mysql/conf:/etc/mysql \

    -e MYSQL_ROOT_PASSWORD=root \

    -d mysql:5.7

    参数说明

    -p 3306:3306:将容器的 3306 端口映射到主机的 3306 端口

    -v /mydata/mysql/conf:/etc/mysql:将配置文件夹挂载到主机

    -v /mydata/mysql/log:/var/log/mysql:将日志文件夹挂载到主机

    -v /mydata/mysql/data:/var/lib/mysql/:将配置文件夹挂载到主机

    -e MYSQL_ROOT_PASSWORD=root:初始化 root 用户的密码 MySQL 配置

     vi /mydata/mysql/conf/my.cnf

    [client]

    default-character-set=utf8

    [mysql]

    default-character-set=utf8

    [mysqld]

    init_connect='SETcollation_connection = utf8_unicode_ci'

    init_connect='SET NAMES utf8'

    character-set-server=utf8

    collation-server=utf8_unicode_ci

    skip-character-set-client-handshake

    skip-name-resolve

    注意:解决 MySQL 连接慢的问题 在配置文件中加入如下,并重启 mysql [mysqld] skip-name-resolve

    解释: skip-name-resolve:跳过域名解析

    3、通过容器的 mysql 命令行工具连接

    docker exec -it mysql mysql -uroot -proot

    4、设置 root 远程访问

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

    5、进入容器文件系统

    docker exec -it mysql /bin/bas

    开启bin log

    [mysqld]
    log-bin=/var/lib/mysql/mysql-bin  
    server-id=1
    binlog_format=MIXED
    expire_logs_days=30  
    ##binlog日志有三种格式:Statement、Row以及Mixed。 mysql默认采用statement,
    ##这里使用mixed
    ##expire_logs_days是日志过期时间,这里配置为30天,默认是0,0是永久的意思 


    重启容器docker restart mysql,即可开启binlog。可使用相关命令查询binlog:

    ##查看binlog日志是否开启
    show variables like '%log_bin%';
    ##查看binlog日志路径
    show variables like '%datadir%';
    ##刷新日志,会新建一个binlog日志文件
    flush logs
    ##查看日志详情内容
    show binlog events in 'mysql-bin.000002'; 
    ##查看日志过期时间  0为永久
    show variables like 'expire_logs_days';

    通过binlog日志恢复数据

    mysql自带mysqlbinlog工具。进入docker容器直接运行指令:

    mysqlbinlog  --start-datetime='2021-01-20 05:02:02' --stop-datetime='2021-01-20 09:02:02' /var/lib/mysql/mysql-bin.000001 | mysql -u root -p 

    即可恢复数据。其中参数解释如下:

    --start-datetime='2021-01-20 05:02:02'  开始时间
    --stop-datetime='2021-01-20 09:02:02'   结束时间
    /var/lib/mysql/mysql-bin.000001         binlog日志文件,如有多个文件,可按顺序              写下,以空格隔开
    | mysql -u root -p                      表示以root账号执行mysql的数据恢复
  • 相关阅读:
    2014年3月新鲜出炉的最佳 JavaScript 工具库
    开发者不容错过的10款免费JavaScript游戏引擎
    创建Android环境并且安装cordova
    程序员技术练级攻略
    android sdk更新后出现please update ADT to the latest version的解决方法
    Linux cscope命令
    UltraISO制作系统ISO镜像
    Windows Live Writer 使用指南
    C语言访问网页
    Linux minicom命令
  • 原文地址:https://www.cnblogs.com/Zeng02/p/16219224.html
Copyright © 2020-2023  润新知