docker cp 写在shell脚本中复制不完整,但是将脚本中的命令逐行执行则没问题,代码如下:

新手上路,请多包涵
#!/bin/bash

#拉取镜像
sudo docker pull mysql:5.7.21

#创建目录
sudo mkdir /opt/mysql_5.7.21
#用于获取未映射
sudo docker run -p 3306:3306 --name mysql_5.7.21 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.21

sudo docker cp mysql_5.7.21:/etc/mysql /opt/mysql_5.7.21/etc
sudo docker cp mysql_5.7.21:/var/log/mysql /opt/mysql_5.7.21/logs
sudo docker cp mysql_5.7.21:/var/lib/mysql /opt/mysql_5.7.21/data

#删除镜像
sudo docker stop mysql_5.7.21 && sudo docker rm mysql_5.7.21

#真正执行并映射目录
sudo docker run -p 3306:3306 --name mysql_5.7.21 \
  -v /opt/mysql_5.7.21/etc:/etc/mysql:ro \
  -v /opt/mysql_5.7.21/logs:/var/log/mysql \
  -v /opt/mysql_5.7.21/data:/var/lib/mysql \
  -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.21
脚本执行完毕后 会发生/opt/mysql_5.7.21/data目录中的文件复制不完整
从而导致容器运行失败
使用if [ $? -eq 0 ];then 来等待依旧无效

求大神指点迷津

阅读 5.6k
1 个回答

cp 要加 -r 参数递归复制文件

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题