如何从运行Docker容器中获取Oracle-xe-11g备份
我正在rancher操作系统上运行oracle-xe-11g。 我想采取我的数据库的数据备份。 当我尝试了命令
docker exec -it $Container_Name /bin/bash
然后我input:
exp userid=username/password file=test.dmp
它工作正常,并创build了test.dump
文件。
但我想用docker exec
命令本身运行命令。 当我尝试这个命令:
docker exec $Container_Name sh -C exp userid=username/password file=test.dmp
我收到此错误消息: sh: 0: Can't open exp.
问题是:使用-c
开关运行bash
,它不会以交互式或loginshell运行,所以bash
不会读取相同的启动脚本。 在/etc/profile
, ~/.bash_profile
, ~/.bash_login
或~/.profile
设置的任何东西都会被跳过。
解决方法:
使用以下命令运行您的容器:
sudo docker run -d --name Oracle-DB -p 49160:22 -p 1521:1521 -e ORACLE_ALLOW_REMOTE=true -e ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe -e PATH=/u01/app/oracle/product/11.2.0/xe/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin -e ORACLE_SID=XE -e SHLVL=1 wnameless/oracle-xe-11g
我正在做的是使用docker
指定在容器中设置的环境variables。
现在为了生成备份文件:
sudo docker exec -it e0e6a0d3e6a9 /bin/bash -c "exp userid=system/oracle file=/test.dmp"
请注意,该文件将在容器内创build,所以您需要通过docker cp command
将其复制到docker主机