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

ps0*_*604 2 oracle windows docker

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

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

克隆后:

git clone https://github.com/oracle/docker-images.git
Run Code Online (Sandbox Code Playgroud)

如果我cddocker-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
Run Code Online (Sandbox Code Playgroud)

如何在 Windows 中构建此映像?

小智 8

使用 Wsl Ubuntu Bash 设置 Docker 可执行文件的路径,或者简单地从 Docker 工具安装适用于 Windows 的 Git Bash 并从 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
Run Code Online (Sandbox Code Playgroud)

成功运行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
Run Code Online (Sandbox Code Playgroud)

您可以通过 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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

从 WSL Bash 终端

xxxx@localhost:~# docker -v
Docker version 19.03.8, build afacb8b
Run Code Online (Sandbox Code Playgroud)