AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 256416
Accepted
ps0604
ps0604
Asked: 2019-12-29 10:45:45 +0800 CST2019-12-29 10:45:45 +0800 CST 2019-12-29 10:45:45 +0800 CST

在 Windows 10 Pro 中构建 Oracle XE docker 映像

  • 772

我正在尝试在 Windows 10 的 docker 容器中安装 Oracle XE 18c。我已经安装了 docker,我需要按照此处的说明构建映像。

我克隆了 git 存储库,但我被困在这一步,因为我克隆的是 Linux 命令而不是 Windows。

克隆后:

git clone https://github.com/oracle/docker-images.git

如果我cd要docker-images\OracleDatabase\SingleInstance\dockerfiles\18.4.0构建图像,我会看到以下sh命令,而不是exeor bat:

12/28/2019  01:36 PM             1,137 checkDBStatus.sh
12/28/2019  01:36 PM               905 checkSpace.sh
12/28/2019  01:36 PM                75 Checksum.xe
12/28/2019  01:36 PM             2,752 Dockerfile.xe
12/28/2019  01:36 PM               533 oracle-xe-18c.conf
12/28/2019  01:36 PM             6,132 runOracle.sh
12/28/2019  01:36 PM               775 setPassword.sh

如何在 Windows 中构建此映像?

oracle windows
  • 2 2 个回答
  • 5292 Views

2 个回答

  • Voted
  1. Best Answer
    user168186
    2019-12-29T21:16:47+08:002019-12-29T21:16:47+08:00

    使用 Wsl Ubuntu Bash 设置 Docker 可执行文件的路径,或者简单地从 Docker Tools 安装 Git Bash for Windows 并从 Git Bash 终端运行 shell 脚本(我更喜欢 Git Bash)。下载并复制 Oracle18xe rpm 文件到 18.40 文件夹

    这是 Windows 的 Git Bash 的输出

     xxx@localhost MINGW64 /d/docker-images/OracleDatabase/SingleInstance/dockerfiles/18.4.0 (master)                                                                                                                                                                                              
        $ ls -lrt
        total 2513906
        -rw-r--r-- 1 user 197121         74 Dec 28 13:17 Checksum.xe
        -rw-r--r-- 1 user 197121       2675 Dec 28 13:17 Dockerfile.xe
        -rwxr-xr-x 1 user 197121       1137 Dec 28 13:17 checkDBStatus.sh*
        -rwxr-xr-x 1 user 197121        905 Dec 28 13:17 checkSpace.sh*
        -rw-r--r-- 1 user 197121        533 Dec 28 13:17 oracle-xe-18c.conf
        -rwxr-xr-x 1 user 197121       6132 Dec 28 13:17 runOracle.sh*
        -rwxr-xr-x 1 user 197121        775 Dec 28 13:17 setPassword.sh*
        -rw-r--r-- 1 user 197121 2574155124 Dec 28 13:48 oracle-database-xe-18c-1.0-1.x86_64.rpm
    

    成功运行shell脚本后

    xxx@localhost MINGW64 /d/docker-images/OracleDatabase/SingleInstance/dockerfiles/18.4.0 (master)
    $ docker image ls
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    oracle/database     18.4.0-xe           19b38be42ae6        30 minutes ago      8.44GB
    oraclelinux         7-slim              0d49b70bc432        9 days ago          118MB
    
    xxx@localhost MINGW64 /d/docker-images/OracleDatabase/SingleInstance/dockerfiles (master)
    $ docker run --name myxedb \
    >     -d \
    >     -p 51521:1521 \
    >     -p 55500:5500 \
    >     -e ORACLE_PWD=xxxxxxx \
    >     -e ORACLE_CHARACTERSET=AL32UTF8 \
    >     oracle/database:18.4.0-xe
    
    
    xxx@localhost MINGW64 /d/docker-images/OracleDatabase/SingleInstance/dockerfiles/18.4.0 (master)
    $ docker ps
    CONTAINER ID        IMAGE                       COMMAND                  CREATED             STATUS                             PORTS                                                        NAMES
    afce013adb98        oracle/database:18.4.0-xe   "/bin/sh -c 'exec $O…"   19 seconds ago      Up 16 seconds (health: starting)   8080/tcp, 0.0.0.0:51521->1521/tcp, 0.0.0.0:55500->5500/tcp   myxedb
    

    您可以通过 sqlplus 连接到数据库或使用 Windows Dos 登录到 docker 容器

        D:\>docker exec -it --user=oracle myxedb bash
    
    
    [oracle@afce013adb98 /]$ . oraenv
    ORACLE_SID = [XE] ?
    The Oracle base remains unchanged with value /opt/oracle
    
    
    
    [oracle@afce013adb98 /]$ sqlplus / as sysdba
    
        SQL*Plus: Release 18.0.0.0.0 - Production on Sun Dec 29 05:04:32 2019
        Version 18.4.0.0.0
    
        Copyright (c) 1982, 2018, Oracle.  All rights reserved.
    
    
        Connected to:
        Oracle Database 18c Express Edition Release 18.0.0.0.0 - Production
        Version 18.4.0.0.0
    
        SQL> select banner from v$version;
    
        BANNER
        --------------------------------------------------------------------------------
        Oracle Database 18c Express Edition Release 18.0.0.0.0 - Production
    

    PS:-确保您从 git bash 终端登录到 docker hub docker login

    要使用 WSL 子系统 bash 终端,请将路径和别名添加到 .bashrc

    export PATH="$HOME/bin:$HOME/.local/bin:/mnt/c/Program\Files/Docker/Docker/resources/bin:$PATH"
    alias docker=docker.exe
    alias docker-compose=docker-compose.exe
    

    从 WSL Bash 终端

    xxxx@localhost:~# docker -v
    Docker version 19.03.8, build afacb8b
    
    • 8
  2. Andreas J
    2020-05-31T03:48:21+08:002020-05-31T03:48:21+08:00

    是的,我真的建议现在为 Docker 使用 WSL 或更确切地说是 WSL 2。

    但是还有另一种(更简单的?)方法可以使用官方 Dockerfiles 构建 Oracle 18c Docker 映像(如果您认为需要,您甚至可以从 WSL/WSL2 内部使用这种方式)。

    请注意,(Linux/Bash)脚本 buildDockerImage.sh 只是一个帮助器(检查校验和等),用于构建调用 docker 的命令。您可以使用可用的 Dockerfile 直接构建您的图像,即。Dockerfile.xe(在 18.0.4 的情况下)。

    在文件夹“18.4.0”(您还保存了从 Oracle 下载的数据库(Linux 版本!))中输入:

    docker build -t [image name of your choosing] -f Dockerfile.xe .
    

    [一定要包括 . (点)在最后,因为这告诉码头工人“这个文件夹”]

    请注意,这大约需要 40-50 分钟。我已经这样做了(在 WSL 2 之前),它对我很有效。

    HTH安德烈亚斯

    • 0

相关问题

  • Oracle 中的数据库备份 - 导出数据库还是使用其他工具?

  • ORDER BY 使用文本列的自定义优先级

  • 舒服的sqlplus界面?[关闭]

  • 如何在数据库中找到最新的 SQL 语句?

  • 如何使用正则表达式查询名称?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve