zoukankan      html  css  js  c++  java
  • Docker 在外部操作docker容器内部的命令的方法

    需求:使用shell脚本把sql数据文件导入到docker版的MySQL服务

    方法一:适合写入判断语句等

    比如备份数据

    [root@vrgv app]# vim 1.sh

    mysqlid=`docker ps -aqf "name=mysql"`

    docker exec -i ${mysqlid} bash<<'EOF'

    #mysqldump导出表结构和数据
    if [ ! -d "/backup" ]; then
    mkdir -p /backup
    fi

    if [ -f "/backup/db.sql" ]; then
    rm -rf /backup/db.sql
    fi

    mysqldump --single-transaction -u root -h 127.0.0.1 --password=root --all-databases > /backup/db.sql

    echo '成功制作备份sql'

    if [ $? -ne 0 ]; then
    echo 'mysqldump运行失败'
    exit
    EOF
    fi

    exit

    EOF

    注:不能使用-ti,会报错“the input device is not a TTY”

    方法二:

    查看nacos容器根目录文件

    [root@vrgv app]# docker exec -it nacos  bash -c 'ls /'
    bin  etc   lib    media  opt   root  sbin  sys  usr
    dev  home  lib64  mnt    proc  run   srv   tmp  var

    创建mysql数据库并导入sql文件

    [root@vrgv app]# docker exec -it mysql /bin/bash -c 'mysqladmin -u root -proot create mobile_application_management'
    [root@vrgv app]# docker exec -it mysql /bin/bash -c 'mysql --single-transaction -uroot -proot mobile_application_management < /sql/mobile_application_management.sql'
    --single-transaction:设置事务的隔离级别为可重复读,即REPEATABLE READ,这样能保证在一个事务中所有相同的查询读取到同样的数据,也就大概保证了在dump期间,如果其他innodb引擎的线程修改了表的数据并提交,对该dump线程的数据并无影响,在这期间不会锁表
    嗨~如果有帮助,请帮忙点个赞吧,谢谢 -致敬每一个正在努力的人
  • 相关阅读:
    objective-C nil,Nil,NULL 和NSNull的小结
    Calendar控件点击下个月按钮后,本月标记的各个具体天的样式都取消
    如何让Button的Text垂直居中显示
    html基础总结2
    html基础总结1
    html基础总结
    微信空白页获取用户openid
    网址
    网站式更新后台代码
    JavaScriptSerializer引用
  • 原文地址:https://www.cnblogs.com/dongweizhen/p/14109346.html
Copyright © 2011-2022 走看看