Docker 在外部操作docker容器内部的命令的方法

网友投稿 263 2022-10-24

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线程的数据并无影响,在这期间不会锁表

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:docker登录harbor仓库时 提示:x509: certificate signed by unknown authority
下一篇:typec接口的好处
相关文章

 发表评论

暂时没有评论,来抢沙发吧~