Docker 在外部操作docker容器内部的命令的方法
2023-09-27 14:25:55 时间
需求:使用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线程的数据并无影响,在这期间不会锁表
相关文章
- docker 简介和使用总结:image,container,dockfile,nginx,redis,compose
- docker run -d启动容器时提示:warninig:IPv4 forwarding is disabled. Networking will not work.问题的处理方法
- 以docker的方式部署mysql数据库的方法
- 大厂都在使用的开源容器Docker,速度掌握这套面试题
- Docker最全教程——从理论到实战(五)
- Docker 中 latest 标签引发的困惑
- 《循序渐进学Docker》——3.4 再次体验Docker
- [转]docker离线安装并导入镜像(从可联网机器导出镜像方法)
- 解决docker拉取镜像慢的方法(亲测有效)
- 查看docker中运行镜像的启动命令方法
- docker ps 命令显示格式化和显示完整信息
- Jenkins构建docker镜像
- Docker的安装
- 下载外网docker镜像的方法
- Docker安装
- 使用Docker部署RabbitMQ 服务的方法
- 使用Docker部署Mysql服务的方法
- web项目docker化的两种方法
- 基于Docker安装RabbitMQ及基本使用
- centos 7 升级Docker 与Docker-Compose
- Docker+Nginx部署前后端分离项目(SpringBoot+Vue)的详细教程
- 程序猿,千万别说你不了解Docker!