在Docker中安装配置Oracle12c并实现数据持久化

来源:互联网 发布:济南百度快照优化公司 编辑:程序博客网 时间:2024/06/03 19:26

在Docker中安装配置Oracle12c并实现数据持久化

  • 在ubuntu中按安装Docker Ce

  • 在docker 中获取oracle镜像信息

    $ docker search oracle
  • 选定镜像,并pull到系统中,一定要先配置加速,不然超级慢

    eric@userver:~$ docker pull sath89/oracle-12cUsing default tag: latestlatest: Pulling from sath89/oracle-12c863735b9fd15: Downloading   5.25MB/65.67MB4fbaa2f403df: Download complete 44be94a95984: Download complete a3ed95caeb02: Download complete b8bc6e8767ee: Download complete c918da326197: Download complete 448e1619a038: Download complete faadd00cf98e: Downloading  2.625MB/2.768GB94c8eec9fdf0: Download complete 58e66654f771: Downloading    1.3MB/4.437MB

  • 查看已经下载的镜像

    eric@userver:~$ docker imagesREPOSITORY         TAG    IMAGE ID     CREATED    SIZEsath89/oracle-12c latest 17cd1ab9d9a7 12 days ago 5.7GBhello-world    latest  f2a91732366c 4 weeks ago 1.85kB
  • 列出运行中的容器

    #暂时没有运行中的eric@userver:~$ docker psCONTAINER ID IMAGE COMMAND  CREATED  STATUS PORTS NAMES

使用oracle12c创建容器

  • 方式一:创建端口并运行,这样每次退出数据不会保留

    $ docker run -d -p 8080:8080 -p 1521:1521 sath89/oracle-12c
  • 方式二:用数据卷实现容器和数据的有效分离,实现数据持久化

    $ docker run -d -p 8080:8080 -p 1521:1521 -v /local_dir:/data sath89/oracle-12c#参数 -d 后台运行容器,并返回容器ID ;  -p 指定端口 , -v 指定数据卷位置
  • 数据卷的特点:

    1、可以供多个容器访问,直接共享或者重用

    2、独立于容器周期,不会在删除容器时删除其挂载的数据卷

    3、数据卷在容器启动时初始化,如果容器使用的镜像在挂载点包含的数据这些数据会复制到新的容器中

    4、可以直接对数据卷里的内容进行修改

  • 数据持久化

    #启动eric@userver:~$ docker run -d -p 8080:8080 -p 1521:1521 -v /home/eric/oradata:/u01/app/oracle sath89/oracle-12c7485d22f2fd5c5d7023407d280fb68b0251841560c121bb2be5954954aa7a698#查看运行容器eric@userver:~$ docker psCONTAINER ID     IMAGE                 COMMAND         7485d22f2fd5    sath89/oracle-12c   "/entrypoint.sh "#查看本地目录,发现有个oradata目录#在该目录下新建测试文件eric@userver:~/oradata$ sudo touch test.txt#查看容器中的内容是否新增$ sudo docker exec 7485d22f2fd5 ls /u01/app/oracle...test.txt...#其实 本地卷中的数据和容器中是同步的
  • 删除容器,数据不会一同删除

    $ docker stop 7485d22f2fd5$ docker rm 7485d22f2fd5$ ls oradata #数据依然存在audit  checkpoints  diag  oradata   test.txt
  • 重新启动一个容器,挂载该数据卷

    $ sudo docker run -it --name oracle2 -v /home/eric/oradata:/datatest sath89/oracle-12c#--name 指定一个名字,不指定会默认随机分配一串字符$ sudo docker exec oracle2 ls /data_test$ docker exec oracle2 ls /data_test...    test.txt     ...#可以同样看到数据
  • 运行该容器

    eric@userver:~$ docker exec -it 7485d22f2fd5 /bin/bashroot@7485d22f2fd5:/

连接oracle12c

--使用此镜像创建的oracle用户和密码: systme/oracle|sys/oraclehostname:localhostport: 1521sid: xeservice name: xeusername: systempassword: oracle--sqlplus 连接:root@7485d22f2fd5:/# sqlplus system/oracle@//localhost:1521/xeSQL*Plus: Release 12.1.0.2.0 Production on Wed Dec 20 06:25:21 2017Copyright (c) 1982, 2014, Oracle.  All rights reserved.Connected to:Oracle Database 12c Standard Edition Release 12.1.0.2.0 - 64bit PrSQLSQL> -- 修改密码有效期,由180天改成无限制SQL> ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;Profile altered.SQL> -- 解锁用户alter user SYSTEM account unlock
原创粉丝点击