镜像
使用如下命令拉取oracle11g镜像
docker pull
registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
拉取完毕后可以使用docker images
查看镜像文件
创建容器
docker run -d -p 1521:1521 --name oracle11g registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
启动容器
docker start oracle11g
进入镜像进行配置
docker exec -it oracle11g bash
使用docker exec -it oracle11g bash进入容器
此时使用sqlplus命令发现不能使用,所以先切换root用户,密码helowin
然后vi /etc/profile
编辑profile配置oracle环境变量,在文件最下方加入
export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2
export ORACLE_SID=helowin
export PATH=$ORACLE_HOME/bin:$PATH
创建软连接
ln -s $ORACLE_HOME/bin/sqlplus /usr/bin
切换到oracle 用户
**这里还要说一下,一定要写中间的内条 - 必须要,否则软连接无效
登录sqlplus并修改sys、system用户密码
sqlplus /nolog
conn /as sysdba
接着执行下面命令
alter user system identified by system;
alter user sys identified by sys;
也可以创建用户
create user test identified by test;
并给用户赋予权限 grant connect,resource,dba to test;
ALTER PROFILE
DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
exit 是退出sql 软连接
导入dmp文件
创建临时表空间
SQL> create temporary tablespace
user_temp tempfile
'\usr\oracle\oracledata\user_temp.dbf' size
50m
autoextend on next 50m maxsize 2048m extent
management local;
创建表空间
SQL> create tablespace user_data logging datafile
'\usr\oracle\oracledata\user_data.dbf' size 50m
autoextend on next 50m
maxsize 2048m extent management local;
2.分配表空间
创建用户并分配表空间
SQL> create user user identified by password
default tablespace user_data
temporary tablespace user_temp;
修改用户表空间
SQL> alter user user default tablespace other_data temporary
tablespace other_temp;
重命名表空间
SQL> alter tablespace user_data rename to new_user_data;
3.创建DIRECTORY
首先创建directory
SQL> create or replace
directory dump_dir as '\usr\oracle\dump\dir'
然后将该DIRECTORY授权给用户
SQL> grant read,write on
directory dump_dir to user ;
退出sqlplus后,创建目录
mkdir /usr/oracle/dump/dir
修改备份目录的属主和属组
chown -R oracle:oinstall /usr/oracle/dump/dir
导入dmp文件
docker cp ddm.dmp helowin_oracle11g:
/usr/oracle/dump/dir
拷贝完毕后,就可以进行导入了,首先进入容器shell docker exec -it
helo_oracle11g bash
,然后切换oracle用户su - oracle
切记别忘了这个-然后执行impdp命令
使用impdp user/password DIRECTORY=dump_dir
DUMPFILE=you_dmp_file.dmp FULL=y;
命令时会报 操作不存在的错误
我采用的是下方法
先在/usr/oracle/dump/dir目录下创建ddm.log文件
imp test/test file = /usr/oracle/dump/dir/ddm.dmp
log = /usr/oracle/dump/dir/ddm.log
full = y
将容器打包成镜像
docker commit -a "runoob.com" -m
“my apache” 容器名称或id 打包的镜像名称:标签
OPTIONS说明:
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。