Docker搭建oracle环境

搜索镜像

docker search oralce

拉取镜像

docker pull oracleinanutshell/oracle-xe-11g  

(具体拉取哪个根据实际情况而定

启动镜像

docker run -p 1521:1521 -e ORACLE_ALLOW_REMOTE=true --name oracle_11g -d  --restart=always oracleinanutshell/oracle-xe-11g    

-d 后台运行 -p: 指定端口映射,格式为:主机(宿主)端口:容器端口

上面命令中 -e ORACLE_ALLOW_REMOTE=true 的作用是开启远程连接,如果只是本地使用可以写成这样:

$ docker run -d -p 49161:1521 alexeiled/docker-oracle-xe-11g
docker run -d -v /data/kongchao/docker_volume/oracle_data:/data/oracle_data -p 49160

自动启动镜像 --restart=always

报错:

FATA[0000] Error response from daemon: could not find image: Multiple IDs found with provided prefix
找到多个带有提供的前缀的ID

docker images 发现明明是有这个镜像的,那就把原来的删了重新pull

docker rmi imageid或者docker image rm [image]
docker pull oracleinanutshell/oracle-xe-11g  

这里发现意思是因为有多个不同id的相同名字的景象,所以根据景象的名字删除景象,而不是id
Docker搭建oracle环境_第1张图片

报错

FATA[0000] Error response from daemon: Conflict. The name “oracle_11g” is already in use by container 839d0476e934. You have to delete (or rename) that container to be able to reuse that name.

杀掉这个容器,然后重新启动

查看所有的容器

docker ps -a

终止容器

docker stop $CONTAINER_ID

可以使用"docker rm 容器id"来删除一个终止状态的容器;若要删除一个运行中的容器,需要加-f参数。

报错:

FATA[0000] Error response from daemon: Cannot start container 3ed0d0a282f945c9ecc8d80d137a9a4ed2d4a926b24aad86be870bd005dd5b7f:  (exit status 1)

解决方案https://www.andrewklau.com/error-response-from-daemon-cannot-start-container-exit-status-1/

简而言之就是重启docker,文章中的方式是 service docker restart,我通过/etc/init.d/docker restart重启

重启之后报错:

FATA[0001] Error response from daemon: Cannot start container c8512409932643e1c480c12680d70a12dc1de4aa5127186e72469cc89e974677: Error starting userland proxy: listen tcp 0.0.0.0:1521: bind: address already in use

这个简单就是端口占用

设置用户信息

docker exec -it oracle_11g /bin/bash

切换到oracle用户,修改oracle的相关账号密码

su - oracle
sqlplus / as sysdba
alter user system identified by oracle;
alter user sys identified by oracle;

查看当前的用户

show user;
SQL> show user;
USER is "SYS"

因为sys只能只能以 sysdba Sysoper角色登录反正我用这个用户登录不了。所以切换用户

Conn system/oracle

查看当前的数据库实例

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
instance_name			     string	 XE
desc all_tables;

如果刚才通过sys建表的话,是没有刚才建的表的,因为是属于不同的用户。

输入建表语句

create table student( 
  SID number(32) primary key,
 SNAME varchar(32),
 wage number(32)
)

create table person( 
  SID number(32) primary key,
 SNAME varchar(32),
 wage number(32)
)

查看是否创建成功

select table_name from all_tables where table_name like 'student';

连接

Docker搭建oracle环境_第2张图片

你可能感兴趣的:(#,Database,------,Oracle,#,Big,Data,------,Docker)