首先,系统(3.8以上内核的linux)中安装好 Docker 这个运用程序。因为网络缘由,咱们下载一个Docker官方的镜像须要很长的时间,甚至下载失败。为此,阿里云容器镜像服务提供了官方的镜像站点,从而加速官方镜像的下载速度。 [ 不会的能够参考我以前的文章:Docker <一> 架构简介与Linux上安装 http://www.javashuo.com/article/p-qdsjcbsd-bh.html]。html
docker search oracle
以看到下图所示的信息:linux
# docker pull sath89/oracle-12c --------sath89/oracle-12c为选定须要pull到系统中的数据库镜像 docker pull sath89/oracle-12c
整个pull过程须要花费一些时间,耐心等待。nginx
若见下图证实pull成功。git
# 使用 docker images 命令便可列出已下载的镜像 docker images
执行命令后,可看到相似于以下的表格:github
# 使用 docker ps 命令便可列出运行中的容器 docker ps
执行命令后,可看到相似于以下的表格:sql
能够发现,目前没有运行的容器。故,接下来咱们新建并启动一个 Oracle12c 容器。docker
# 使用 docker run 命令便可新建并启动一个容器 docker run
命令语法以下:数据库
# 语法 docker run [OPTIONS] IMAGE [COMMAND] [ARG...] # OPTIONS -a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项; -d: 后台运行容器,并返回容器ID; -i: 以交互模式运行容器,一般与 -t 同时使用; -t: 为容器从新分配一个伪输入终端,一般与 -i 同时使用; --name="nginx-lb": 为容器指定一个名称; --dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致; --dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致; -h "mars": 指定容器的hostname; -e username="ritchie": 设置环境变量; --env-file=[]: 从指定文件读入环境变量; --cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行; -m :设置容器使用内存最大值; --net="bridge": 指定容器的网络链接类型,支持 bridge/host/none/container: 四种类型; --link=[]: 添加连接到另外一个容器; --expose=[]: 开放一个端口或一组端口;
启动方式一:运行打开8080和1521端口:bash
docker run -d -p 8080:8080 -p 1521:1521 sath89/oracle-12c
执行命令后,看到以下信息,容器就启动完成了。服务器
查看日志:
docker log -f d9b8cbfa692bc4cfbf4fbbb85bec1990b76c6a7b454ae7bedee0fea21f88af89
进入容器虚拟终端:
docker exec -it d9b8cbfa692bc4cfbf4fbbb85bec1990b76c6a7b454ae7bedee0fea21f88af89 /bin/bash
启动方式二:可用下述命令实现容器和数据的有效分离:
docker run -d -p 8080:8080 -p 1521:1521 -v /my/oracle/data:/u01/app/oracle sath89/oracle-12c
启动方式三:使用自定义DBCA_TOTAL_MEMORY(以MB为单位)运行:
docker run -d -p 8080:8080 -p 1521:1521 \ -v /my/oracle/data:/u01/app/oracle -e \ CA_TOTAL_MEMORY=1024 sath89/oracle-12c
注意使用此镜像建立的oracle用户名和密码为: system / oracle 或者 sys / oracle ;而后咱们使用本地的sql工具 JetBrains DataGrip 链接 oracle12c 数据库便可。
# 使用如下设置链接数据库: hostname: localhost port: 1521 sid: xe service name: xe username: system password: oracle
使用sqlplus链接:
sqlplus system/oracle@//localhost:1521/xe
SYS&SYSTEM的密码:
oracle
使用如下设置链接到Oracle Application Express Web管理控制台:
http://localhost:8080/apex workspace: INTERNAL user: ADMIN password: 0Racle$
Apex升级到v 5. *
docker run -it --rm --volumes-from ${DB_CONTAINER_NAME} \ --link ${DB_CONTAINER_NAME}:oracle-database \ -e PASS=YourSYSPASS sath89/apex install
使用如下设置链接到Oracle企业管理控制台:
http://localhost:8080/em user: sys password: oracle connect as sysdba: true
默认状况下,Web管理控制台已启用。禁用添加环境变量:
docker run -d -e WEB_CONSOLE=false -p 1521:1521 -v /my/oracle/data:/u01/app/oracle sath89/oracle-12c #You can Enable/Disable it on any time
增长的脚本或转储(清除)初始化:
docker run -d -p 1521:1521 -v \ /my/oracle/data:/u01/app/oracle -v \ /my/oracle/init/SCRIPTSorSQL:/docker-entrypoint-initdb.d sath89/oracle-12c
默认状况下,docker-entrypoint-initdb.d
只有在初始化数据库(第一次运行)时才启用导入 。
要自定义转储导入使用IMPDP_OPTIONS 环境变量就像-e IMPDP_OPTION="REMAP_TABLESPACE=FOO:BAR" 在任何状况下运行导入添加-e IMPORT_FROM_VOLUME=true 。
在使用DMP导入转储文件的状况下,应命名为$ {IMPORT_SCHEME_NAME} .dmp
用户输入的凭证是$ {IMPORT_SCHEME_NAME} / $ {IMPORT_SCHEME_NAME}
-- 查看用户的proifle是哪一个,通常是default: SELECT username,PROFILE FROM dba_users; -- 查看指定概要文件(如default)的密码有效期设置: SELECT * FROM dba_profiles s WHERE s.profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME'; -- 将密码有效期由默认的180天修改为“无限制”:修改以后不须要重启动数据库,会当即生效。 ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED; -- 修改用户SYSTEM 密码 alter user SYSTEM identified by "****password****";
-- 解锁方法 alter user SYSTEM account unlock;
相关连接
· docker-oracle-12c 其GitHub主页: https://github.com/MaksymBilenko/docker-oracle-12c
· Apex 详情 :http://https://github.com/MaksymBilenko/docker-oracle-apex
· docker 的 Github主页:https://github.com/docker
· Oracle Database 12c 使用文档:http://www.oracle.com/technetwork/cn/database/enterprise-edition/documentation/index.html
本文为博主原创文章,转载请注明出处!