20210107のdockerに関する記事は9件です。

Dockerとコンテナの概要

この記事に関して

社内の若手勉強会用に作成しました
できるだけ簡単に、概要の理解、環境構築、実際に動作させるところまで説明しています

環境

  • Windows 10
  • Docker for Windows 2.3.0.4 stable edition
  • 認証proxyが存在(項目をわけているので、proxyが無い方はとばせばOK)

Dockerとコンテナの概要

コンテナとは

仮想化技術の1つ

Dockerとは

下記に示すコンテナエンジンの1つ

従来の仮想化(ハイパーバイザ型)とコンテナの違い

  • コンテナはホストのOSのカーネルを共有するため、リソースの使用率が低く、起動が早い
  • 依存関係をコンテナ内にパッケージ化することができる
    →コンテナ化されたアプリケーションは別環境でも実行することができる(可搬性)
     従来のハイパーバイザ型では、別環境で動かす際、素材の入手と手動での環境構築が必要だった image2021-1-6_18-26-54.png

OSとOSカーネルの話

  • OSカーネル
    • ソフトウェアとハードウェアの仲介を行うOSの中でもメインの役割を担うもの。
    • 有名なカーネルとしてはLinux、Windowsカーネル(?)がある
  • OS

    • カーネルの上に、ソフトウェア(UI,ドライバ、開発者ツール等)を乗せたもの
    • Linuxカーネルも、ソフトウェアによってUbuntu、CentOS、RHELといったOSに分かれる

    image2021-1-6_19-10-26.png

Docker for Windowsの環境構築

Hyper-Vの有効化

DockerをWindowsで動かすには、Hyper-Vの有効化が必要となるため、
下記コマンドを管理者権限で開いたpowershellで実行し、
Hyper-Vの有効化を行う(PCの再起動が必要となる)

>Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All

再起動後、BCDEdit※にてHyper-Vが有効になっているか確認する
powershellで下記コマンドを実行し、
hypervisorlaunchtype Autoで出力されていたら有効化に成功している

※ブート構成データ (BCD) を管理するためのコマンドラインツール

bcdedit /enum | find '"hypervisorlaunchtype"'

offだった場合、下記コマンドを実行し、もう一度再起動を行う。

bcdedit /set hypervisorlaunchtype auto

docker for windowsのインストール&セットアップ

Docker for Windows(2.3.0.4 stable edition)を下記リンクから入手する
https://docs.docker.com/get-docker/

インストール後に再起動を行う
再起動後、Dockerを起動するとDockerのスタートアップ手順が表示される
インストール完了後、画面右下のインジケーターにdocker for windowsが追加される

イメージやコンテナの起動に、メモリをかなり必要とするため
[Setting]→[Resources]からメモリ割り当てを2GBから4GBに変更する

下記はproxy認証が必要な方のみ

[Setting]→[Resources]→[PROXIES]に下記設定を入力する。
・http://<ユーザー名>:<パスワード>@プロキシホスト名:プロキシポート番号/ を設定する

なぜコンテナなのにHyper-V(ハイパーバイザ)が必要なのか

Hyper-Vはハイパーバイザで、コンテナでは必要ないのでは?と思うかもしれない
これはDockerコンテナはLinuxがベースとなっており、Linuxカーネルが必要になるためである
Docker for WindowsはWindowsOS上にHyper-VでLinuxOSをたて、
そのHyper-V上のLinuxカーネルをコンテナで共有している

image2021-1-6_19-33-42.png

Dockerの動作環境さえ整えてしまえば、あとは好きなコンテナを動作させることができる
コンテナはDocker Hub(※後述)というネット上の管理場所から取得することができる
このとき、コンテナはコンテナイメージというスナップショットのような形式で配布されている
イメージ取得後、実行することでコンテナとして動作させることが可能となる

Dockerの操作

DockerHub

コンテナイメージは主にDocker Hubというネット上の管理場所から取得することができる
イメージの検索のみならユーザ登録無しで可能
ここでイメージ名、提供元、最新のバージョン等を確認することができる。
https://hub.docker.com/

Dockerイメージの取得~コンテナの実行

docker for Windowsを入手すると、コマンドプロンプトからdockerコマンドが実行できるようになる
実際にalpineという軽量なlinuxのイメージをdocker hubから取得し、実行する


>docker pull alpine:latest
latest: Pulling from library/alpine
801bfaa63ef2: Pull complete                                                                                                                                                                                                                  Digest: sha256:3c7497bf0c7af93428242d6176e8f7905f2201d8fc5861f45be7a346b5f23436
Status: Downloaded newer image for alpine:latest
docker.io/library/alpine:latest

>docker images
REPOSITORY                           TAG                    IMAGE ID            CREATED             SIZE
alpine                               latest                 389fef711851        2 weeks ago         5.58MB

>docker run -it  -d  alpine:latest  /bin/sh

>docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
c3a9d3cc09f4        alpine:latest       "/bin/sh"                6 seconds ago       Up 3 seconds                                 loving_mendeleev

docker exec -it c3a9d3cc09f4 /bin/sh
/ # ls
bin    dev    etc    home   lib    media  mnt    opt    proc   root   run    sbin   srv    sys    tmp    usr    var
/ # exit

各コマンドの説明は下記の通り

  • docker pull <イメージ名:タグ名>
    • docker hubからイメージを取得している
    • イメージのバージョンをタグで指定する、指定しない場合は自動的にlatest(最新版)になる
  • docker images
    • ローカルに保存しているイメージの一覧が確認できる
  • docker run [オプション] <イメージ名> コマンド
    • dockerイメージをコンテナとして起動している
    • -itオプションを付与することで、コンテナで標準入出力を行えるようになる
    • またコマンドでログイン時に動かすコマンドの指定ができる
    • /bin/shではシェルを起動して、dockerにアクセス後コマンド入力できるようになっている
    • -dはバックグラウンドで起動することを指定している
  • docker ps
    • 稼働しているコンテナの一覧を取得する
  • docker exec [オプション] <コンテナ名> コマンド
    • 起動しているコンテナの中に入る
    • exitでコンテナから出ることができる

image2021-1-7_10-47-17.png

Dockerfile

実際にコンテナを作成する際、ベースイメージに加え
必要なミドルウェアやアプリを乗せてコンテナを作成することが多い
起動したコンテナの中に入って操作することも可能だが、
Dockerfileとして構成を作成すると、
セットアップや資源のコピーを自動で実施できるようになる

Dockerfileを使用したWebサーバコンテナの起動

簡単なWebサーバーコンテナを作成する例を示す

Dockerfile
#Webサーバnginxのイメージを使用する
#ここで指定したイメージをdockerhubからpullする
FROM nginx:alpine
#ADDでローカル端末からコンテナ環境へ素材のコピーができる
#/usr/share/nginx/htmlはnginxで表示するhtmlを格納する場所
ADD ./index.html /usr/share/nginx/html
#コンテナ内の80ポートを解放
EXPOSE 80
#コンテナのエントリーポイントを設定する
ENTRYPOINT /usr/sbin/nginx -g "daemon off;" -c /etc/nginx/nginx.conf
index.html
hello world,Docker

上記ファイルを作成後、保存したディレクトリで下記コマンドを実行していく

作業フォルダ/ ◀ここでコマンドプロンプト起動
├ Dockerfile
└index.html

>docker build -t myimage .
Sending build context to Docker daemon  4.096kB
Step 1/5 : FROM nginx:alpine
 ---> 629df02b47c8
Step 2/5 : CMD echo "now running..."
 ---> Using cache
 ---> 2b4f225ff66e
Step 3/5 : ADD ./index.html /usr/share/nginx/html
 ---> Using cache
 ---> 8de80809c52c
Step 4/5 : EXPOSE 80
 ---> Using cache
 ---> 90168e587d3b
Step 5/5 : ENTRYPOINT /usr/sbin/nginx -g "daemon off;" -c /etc/nginx/nginx.conf
 ---> Running in eb60ad7be198
Removing intermediate container eb60ad7be198
 ---> d4d131ab1d24
Successfully built d4d131ab1d24
Successfully tagged myimage:latest

>docker run --name mycontainer -d -p 30080:80 myimage
  • docker build -t <イメージ名> パス
    • Dockerfileの内容を元にイメージを生成する
    • -tは作成するイメージに名称を付けるためのオプション
    • イメージ名は自由に設定可能
    • パスではbuildに使用するDockerfileのパスを指定する
    • 今回はカレントに保存しているので【.】を指定
  • docker run --name <コンテナ名> -d -p 30080:80 <イメージ名>
    • イメージ名を元にコンテナを作成する
    • --nameはコンテナに名前を付けるオプション
    • -pはコンテナのポートをホストに公開する設定
    • Dockerfileにてコンテナの80ポートを解放し、
    • ホストの30080ポートに接続するとコンテナの80ポートにつながるようになっている コンテナ起動後、アクセスしてみるとwebサーバが起動しており先ほど作成したhtmlが表示された

image2021-1-7_14-34-30.png
image2021-1-7_14-42-59.png

実際にコンテナを使ってみた感想

現在所属するプロジェクトでは、様々な技術を使用しているため
逐一環境構築するのが大変だったが、Dockerを使用すると、
Dockerfileを生成し、ソースリポジトリに入れておけば
メンバが各々コンテナ環境を作成して手を動かせるので非常に有用だと感じる
実際にはdocker-composeという複数コンテナを立てられる技術を使用しているのだが
力尽きたので別記事を参照ください
また、実際に運用するとなるとk8s等のオーケストレーションツールの活用が必須だが
フィジビリティ確認等軽く動かす程度ならこの程度の知識で十分だと思った

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

AWS Lambda で 超シンプルに任意のコンテナ Imageを使用する方法

概要

AWS LambdaでContainer Image Supportが発表されました。
AWS Lambda の新機能 – コンテナイメージのサポート

しかし、AWS公式ドキュメントに書かれているサンプルコードは、
癖があって少しわかりづらい内容です。

本記事では、出来るだけシンプルなデプロイ・実行方法について書いていきます。

対象読者

  • Dockerやコンテナの知識がある。
  • AWSのLambdaのざっくりとした知識がある。
  • aws-cliをインストール・セットアップしている。

ハンズオン

以下の流れで行います。
1. ファイルの準備
2. Image作成・ローカルでの実行
3. Imageのデプロイ
4. Lambdaの設定・実行

今回のディレクトリ構成です。
応用が効きやすいよう、できるだけシンプルにしました。

# ディレクトリ構成
├── Dockerfile
├── entry.sh
└── app
    └── app.py

(1) ファイルの準備

今回は、buster(debianイメージ。LinuxディストリビューションのOS)を使ってみましょう。
既にpythonがインストールされてるイメージを用います。
実際には、他のイメージでも問題ないです。

ポイントは以下の2点になります。
- awslambdaricのインストール
- ローカルで動かしたい場合は、runtime interface emulatorのインストール
これらはentry.sh(後述)で使用することになります。

各ファイルのソースコードを以下に示します。

  • Dockerfile : Image作成
# Dockerfile

FROM python:3.9-buster

# runtime interface consoleのインストール
RUN pip install awslambdaric

# localで実行するために、runtime interface emulatorのinstall
ADD https://github.com/aws/aws-lambda-runtime-interface-emulator/releases/latest/download/aws-lambda-rie /usr/bin/aws-lambda-rie
RUN chmod 755 /usr/bin/aws-lambda-rie
COPY entry.sh "/entry.sh"
RUN chmod 755 /entry.sh

# 実行ファイルをコンテナ内に配置。
ARG APP_DIR="/home/app/"
WORKDIR ${APP_DIR}
COPY app ${APP_DIR}

ENTRYPOINT [ "/entry.sh" ]
CMD [ "app.handler" ]
  • app/app.py : 実行したいソースコード。
# app/app.py
def handler(event, context):
    return "Hello world!!"

  • entry.sh : ローカルであるか、AWS Lambda上のコンテナであるかを判断して aws-lambda-rieやawslambdaricを使用する。公式参照。
# app/entry.sh

if [ -z "${AWS_LAMBDA_RUNTIME_API}" ]; then
    exec /usr/bin/aws-lambda-rie /usr/local/bin/python -m awslambdaric $1
else
    exec /usr/local/bin/python -m awslambdaric $1
fi

※注意
/usr/local/bin/pythonとか/entry.shにしてるのは、lambdaの仕様で、コマンドは絶対バスで書く必要あるらしいです。
絶対パスでない場合、ローカルでは動きますが、Lambdaで実行すると以下のようなエラーが生じます。

START RequestId: 80f9d98d-06b5-4ba8-b729-b2e6ac2abbe6 Version: $LATEST
IMAGE   Launch error: Couldn't find valid bootstrap(s): [python]    Entrypoint: []

(2) イメージの作成・ローカルでの実行

まずはイメージを作成します。

docker build -t container_lambda .

次に、コンテナを立てると、デーモンが立ち上がります。

docker run -it --rm -p 9000:8080 container_lambda
> NFO[0000] exec '/usr/local/bin/python' (cwd=/home/app, handler=app.handler) 

イベントを飛ばすには、以下のURLにpostを投げます。

curl -XPOST "http://localhost:9002/2015-03-31/functions/function/invocations" -d '{}'
> "Hello world!!"% 

するとHello World!!が返ってきました!
ローカルでの実行成功です。

実行するファイルや関数を変えたいときは、CMDで指定するhandlerを変更しましょう。

(3) イメージのデプロイ

実際にLambdaで動かすために、AWSのElastic Container Registory(ECR)にイメージを登録します。
まずは、ECRの画面にうつりましょう。

リポジトリ作成を押します。
image.png

今回は、container_lambdaという名前でリポジトリを作成します。
image.png
名前を決めたら、一番下のリポジトリ作成を押してください

次に、このリポジトリにlocalのimageのpushします。

# imageの名前を指定。
IMAGENAME=container_lambda

# ECRのURLを指定。
REGISTRYURL=xxxxxxxxx.ecr.ap-northeast-1.amazonaws.com

# AWS ECR にログイン。
aws ecr get-login-password | docker login --username AWS --password-stdin $REGISTRYURL

# imageの作成、およびAWS ECRへのデプロイ。
docker build -t ${IMAGENAME} .
docker tag ${IMAGENAME} 386617633989.dkr.ecr.ap-northeast-1.amazonaws.com/${IMAGENAME}
docker push 386617633989.dkr.ecr.ap-northeast-1.amazonaws.com/${IMAGENAME}

これでimageをデプロイすることができました。

(4) Lambdaの設定・実行

最後にLambdaで実行しましょう!
まずはAWSコンソールから、Lambdaの画面に行き、関数の作成を押します。

  1. コンテナイメージを選択
  2. 関数名をつける(今回はcontainer_lambda)
  3. 先ほどデプロイしたDocker Imageを指定 image.png そして関数の作成を押すと、画面が遷移します。 しばらくすると上の帯が緑になって、lambdaのセットアップが終わります。

image.png

右上のテストを定義し、実行してみると...
image.png
Hello world!!が返ってきました!

まとめ

ということで、オリジナルランタイムでの実行をまとめてみました。

公式ドキュメントではわざとalpine系を使ったり、Dockerのmulti stage buiidしたりしてややこしそうですが、実際はもっと簡単にできることが分かったと思います。

Lambdaは、最大コア数6、メモリ10GBまでの対応も発表されり激アツです。簡単な機械学習APIもより作りやすくなりました。
AWS Lambda now supports up to 10 GB of memory and 6 vCPU cores for Lambda Functions

非常に便利なので是非みなさんトライしてみてください!

次は、Detectron2という画像認識モデルをAWS Lambdaで動かしてみたいと思います!

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【AWS Lambda】Pythonで超シンプルに任意のコンテナ Imageを使用する

概要

AWS LambdaでContainer Image Supportが発表されました。
AWS Lambda の新機能 – コンテナイメージのサポート

しかし、AWS公式ドキュメントに書かれているサンプルコードは、
癖があって少しわかりづらい内容です。

本記事では、出来るだけシンプルなデプロイ・実行方法について書いていきます。

対象読者

  • Dockerやコンテナの知識がある。
  • AWSのLambdaのざっくりとした知識がある。
  • aws-cliをインストール・セットアップしている。

ハンズオン

以下の流れで行います。
1. ファイルの準備
2. Image作成・ローカルでの実行
3. Imageのデプロイ
4. Lambdaの設定・実行

今回のディレクトリ構成です。
応用が効きやすいよう、できるだけシンプルにしました。

# ディレクトリ構成
├── Dockerfile
├── entry.sh
└── app
    └── app.py

(1) ファイルの準備

今回は、buster(debianイメージ。LinuxディストリビューションのOS)を使ってみましょう。
既にpythonがインストールされてるイメージを用います。
実際には、他のイメージでも問題ないです。

ポイントは以下の2点になります。
- awslambdaricのインストール
- ローカルで動かしたい場合は、runtime interface emulatorのインストール
これらはentry.sh(後述)で使用することになります。

各ファイルのソースコードを以下に示します。

  • Dockerfile : Image作成
# Dockerfile

FROM python:3.9-buster

# runtime interface consoleのインストール
RUN pip install awslambdaric

# localで実行するために、runtime interface emulatorのinstall
ADD https://github.com/aws/aws-lambda-runtime-interface-emulator/releases/latest/download/aws-lambda-rie /usr/bin/aws-lambda-rie
RUN chmod 755 /usr/bin/aws-lambda-rie
COPY entry.sh "/entry.sh"
RUN chmod 755 /entry.sh

# 実行ファイルをコンテナ内に配置。
ARG APP_DIR="/home/app/"
WORKDIR ${APP_DIR}
COPY app ${APP_DIR}

ENTRYPOINT [ "/entry.sh" ]
CMD [ "app.handler" ]
  • app/app.py : 実行したいソースコード。
# app/app.py
def handler(event, context):
    return "Hello world!!"

  • entry.sh : ローカルであるか、AWS Lambda上のコンテナであるかを判断して aws-lambda-rieやawslambdaricを使用する。公式参照。
# app/entry.sh

if [ -z "${AWS_LAMBDA_RUNTIME_API}" ]; then
    exec /usr/bin/aws-lambda-rie /usr/local/bin/python -m awslambdaric $1
else
    exec /usr/local/bin/python -m awslambdaric $1
fi

※注意
/usr/local/bin/pythonとか/entry.shにしてるのは、lambdaの仕様で、コマンドは絶対バスで書く必要あるらしいです。
絶対パスでない場合、ローカルでは動きますが、Lambdaで実行すると以下のようなエラーが生じます。

START RequestId: 80f9d98d-06b5-4ba8-b729-b2e6ac2abbe6 Version: $LATEST
IMAGE   Launch error: Couldn't find valid bootstrap(s): [python]    Entrypoint: []

(2) イメージの作成・ローカルでの実行

まずはイメージを作成します。

docker build -t container_lambda .

次に、コンテナを立てると、デーモンが立ち上がります。

docker run -it --rm -p 9000:8080 container_lambda
> NFO[0000] exec '/usr/local/bin/python' (cwd=/home/app, handler=app.handler) 

イベントを飛ばすには、以下のURLにpostを投げます。

curl -XPOST "http://localhost:9002/2015-03-31/functions/function/invocations" -d '{}'
> "Hello world!!"% 

するとHello World!!が返ってきました!
ローカルでの実行成功です。

実行するファイルや関数を変えたいときは、CMDで指定するhandlerを変更しましょう。

(3) イメージのデプロイ

実際にLambdaで動かすために、AWSのElastic Container Registory(ECR)にイメージを登録します。
まずは、ECRの画面にうつりましょう。

リポジトリ作成を押します。
image.png

今回は、container_lambdaという名前でリポジトリを作成します。
image.png
名前を決めたら、一番下のリポジトリ作成を押してください

次に、このリポジトリにlocalのimageのpushします。

# imageの名前を指定。
IMAGENAME=container_lambda

# ECRのURLを指定。
REGISTRYURL=xxxxxxxxx.ecr.ap-northeast-1.amazonaws.com

# AWS ECR にログイン。
aws ecr get-login-password | docker login --username AWS --password-stdin $REGISTRYURL

# imageの作成、およびAWS ECRへのデプロイ。
docker build -t ${IMAGENAME} .
docker tag ${IMAGENAME} 386617633989.dkr.ecr.ap-northeast-1.amazonaws.com/${IMAGENAME}
docker push 386617633989.dkr.ecr.ap-northeast-1.amazonaws.com/${IMAGENAME}

これでimageをデプロイすることができました。

(4) Lambdaの設定・実行

最後にLambdaで実行しましょう!
まずはAWSコンソールから、Lambdaの画面に行き、関数の作成を押します。

  1. コンテナイメージを選択
  2. 関数名をつける(今回はcontainer_lambda)
  3. 先ほどデプロイしたDocker Imageを指定 image.png そして関数の作成を押すと、画面が遷移します。 しばらくすると上の帯が緑になって、lambdaのセットアップが終わります。

image.png

右上のテストを定義し、実行してみると...
image.png
Hello world!!が返ってきました!

まとめ

ということで、オリジナルランタイムでの実行をまとめてみました。

公式ドキュメントではわざとalpine系を使ったり、Dockerのmulti stage buiidしたりしてややこしそうですが、実際はもっと簡単にできることが分かったと思います。

Lambdaは、最大コア数6、メモリ10GBまでの対応も発表されり激アツです。簡単な機械学習APIもより作りやすくなりました。
AWS Lambda now supports up to 10 GB of memory and 6 vCPU cores for Lambda Functions

非常に便利なので是非みなさんトライしてみてください!

次は、Detectron2という画像認識モデルをAWS Lambdaで動かしてみたいと思います!

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Dockerとは何? どういう用途で使われる?

はじめに

プログラミングを学習していると、Dockerってよく聞きます。

就活するうえでDockerは必須スキルみたいで。何ができるのかを勉強しながら少しずつアウトプットできたらと思います。

Dockerとは何か

  • コンテナ型仮想環境を作成、実行、管理するためのプラットフォーム
  • Dockerのソフトウェアを使って素早くコンテナ起動し、様々なアプリケーションを実行することができる
  • 異なる環境(PCやサーバ)で簡単に同じ仮想環境を再現できる
  • Dockerのソフトウェア自体はGo言語で書かれている

・コンテナとは一種の仮想環境のことです。PCやサーバー上にコンテナを作成して、そのコンテナの中でプログラムを実行することができます。

例えば

Pythonのアプリケーションを実行したい場合は、Pythonがインストールされたコンテナを使えば即座にPythonアプリケーションを実行して動作を確認することができる。
このように用途に合わせたコンテナを起動することで様々なアプリケーションを素早く実行できるのがコンテナ型仮想環境の特徴です。

また異なるPCやサーバで同じ環境を再現したい場合、dockerの設定ファイルを共有することで簡単に同様の環境を構築することができます。
これは開発チームのメンバー間で同じ環境を用意する際に重宝されます。

あとdockerのソフトウェア自体はGo言語で書かれています。普段はそれほど気にすることでもないのかもしれませんが、dockerコマンドの出力形式を指定する場合にGoテンプレートの書式を使用するなど多少Go言語に慣れておくと使いやすい面もあるのかなと思います。

Dockerはどういう用途で使われる?

  • アプリケーション開発環境
  • 検証環境、本番環境
  • Webサーバ、データベースサーバなどの構築
  • 各種プログラミング言語の実行環境
  • その他様々なミドルウェアの環境構築

アプリケーション開発環境

プリケーション開発環境は開発者個人個人のPCで開発中のアプリケーションを動かす時に使われるケースです。
Webアプリケーションのプロジェクトでは、ほとんどの企業で使われているのではないかと思うほど普及しています。まずプロジェクトに入った時に自分のPCにdockerで開発環境を構築するというケースがかなり多いので、開発者の方は基本的な使い方を習得しなければいけないと思います。

検証環境、本番環境

検証環境、本番環境は各開発者が作成したアプリケーションをサーバで動かす際もdockerが使われるということです。
アプリケーション開発では開発者のPCに開発環境を用意してアプリケーションを開発します。
アプリケーションが出来上がったらそれをdockerイメージという形で環境とアプリを一つの塊にまとめます。それをdockerリポジトリと呼ばれるイメージを管理するサーバにアップロードします。
そのイメージをほかのサーバでダウンロードしてイメージからコンテナを起動することで基本的には開発したときと同じ環境をサーバ上でも立ち上げることができます。
dockerではこの開発からサーバで稼働するまでの流れを素早く行えることが一つのメリットとなっています。
検証サーバとは一般的に本番リリース前に本番同等の環境で動作確認をするためのサーバで、本番サーバとは実際にユーザーからのアクセスがあるサーバを言います。
一般的なwebアプリケーション開発では、このように開発PCで開発し、できあがったものを検証サーバで動作確認して、問題がなかったら本番サーバにリリースするといった一連の流れを繰り返すことで開発が進むみたいです。

Webサーバ、データベースサーバなどの構築

Webサーバにはnginx,Apache。データベースサーバにはMySQL,PostgreSQLなど一般的によく使われるものもdockerを使うことで簡単に立ち上げることができます。これらのサーバをコンテナとして作成するために公式に公開されているdockerイメージがあり、このイメージを使うことで簡単にサーバ用途のコンテナを立ち上げることができます。

- 各種プログラミング言語の実行環境.その他様々なミドルウェアの環境構築

プログラミング言語の実行環境やその他のミドルウェアも同様にdockerイメージが幅広く公開されているので、これらのイメージを使えば様々なコンテナを立ち上げるのが可能になります。
どのようなイメージが公開されているかは、主にdocker hubと言われる、dockerで運営されているサイトで確認することができます

おわりに

ざっくり説明でした。
Dockerについては、これからどんどん勉強して記事を載せていこうと思います。

間違っている説明がありましたら、コメントで指摘してくださると幸いです。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Docker簡単構築データベース(PostgreSQL)

TL;DR

Dockerでお手軽にPostgreSQLを作っちゃおうぜ、という記事である。
研修記事のためツール等々決め打ちにしてあるが、その辺はドンマイなのである。

まずダウンロードを仕掛けとこう

今回SQLクライアントはDBeaverを使う。取り敢えず最新版をとってくれば良い。
https://dbeaver.io/

ダウンロード中にサクッとDBを立ち上げてしまおう。

Docker Desktop for Windows

これがないと話にならない。まずはインストールしてしまおう。
https://docs.docker.jp/docker-for-windows/install.html

PowerShellでdocker psを叩いて以下のように出れば準備は完了だ。

> docker ps
CONTAINER ID   IMAGE             COMMAND                  CREATED        STATUS        PORTS                    NAMES

では取り敢えずPostgreSQLを起動しよう

研修なので丁寧にイメージの探し方から。
以下>の後ろがコマンドである。

> docker search postgres
NAME                                    DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
postgres                                The PostgreSQL object-relational database sy…   8763      [OK]

検索するとサクッと見つかった。基本的にはOFFICIAL(公式)のイメージを取るのがベターだ。

ここで以下コマンドである。

docker run -d --rm --name db -p 5555:5432 -e POSTGRES_HOST_AUTH_METHOD=trust postgres

イメージをダウンロードしてきて起動する。
コマンドの説明は後述。docker psでコンテナが起動していれば完了である。

> docker ps
CONTAINER ID   IMAGE      COMMAND                  CREATED          STATUS          PORTS                    NAMES
9676081a5f72   postgres   "docker-entrypoint.s…"   46 seconds ago   Up 46 seconds   0.0.0.0:5555->5432/tcp   db

DBeaverはダウンロードできたかな

インストールして立ち上げてみよう。

image.png

ポートを5555で。
image.png

接続できたかな?
テーブルやカラムを作ってみよう。
image.png

今回は以下の様に「テストテーブル」というのを作ってみた。
image.png

psqlで繋いでみる

docker exec -it db bashでコンテナに接続。

> docker exec -it db bash
root@9676081a5f72:/#
root@9676081a5f72:/# psql -U postgres
psql (13.0 (Debian 13.0-1.pgdg100+1))
Type "help" for help.

postgres=# \db
       List of tablespaces
    Name    |  Owner   | Location
------------+----------+----------
 pg_default | postgres |
 pg_global  | postgres |
(2 rows)

postgres=# \dt
             List of relations
 Schema |      Name      | Type  |  Owner
--------+----------------+-------+----------
 public | テストテーブル | table | postgres
(1 row)

postgres=#

ちゃんとできてるね。\qで抜けて、exitでコンテナから脱出しよう。

このコンテナは終わったら消えるしデータも永続化されない

> docker ps --all
CONTAINER ID   IMAGE             COMMAND                  CREATED          STATUS                        PORTS                    NAMES
9676081a5f72   postgres          "docker-entrypoint.s…"   20 minutes ago   Up 20 minutes                 0.0.0.0:5555->5432/tcp   db

今はこのように存在しているが、このコンテナを止めてみよう。
docker stop dbだ。

ちゃんと消えてるかな?

> docker ps --all
CONTAINER ID   IMAGE             COMMAND                  CREATED        STATUS                        PORTS                    NAMES

今回のDockerコマンドの説明

この一行でサクッとDBが起動してしまった。マジDockerさん神くね?

docker run -d --rm --name db -p 5555:5432 -e POSTGRES_HOST_AUTH_METHOD=trust postgres
概要 備考
run 起動 https://docs.docker.jp/engine/reference/run.html
-d デタッチド 要するにバックグラウンド
--rm コンテナ終了時にコンテナを削除 必須ではない docker rm dbで自分で消してもいい
--name db コンテナ名 今回はdbとした。省略可
-p 5555:5432 ポートフォワーディング コンテナの5432をホストの5555へ
-e POSTGRES_HOST_AUTH_METHOD=trust パスワードなし パスワードをつける場合は-e POSTGRES_PASSWORD=passwordを使おう
postgres イメージ名 searchで調べた奴

おまけ(docker-composeと永続化)

docker-composeのフォルダ構成とDockerfileとdocker-compose.ymlのサンプル。
このサンプルではホストの5434で反応するはず。
servicesappを追加して、db-netを介してアプリからDBにすぐ接続。
init.sqlにDBとかテーブルとか作るSQLを入れておく、というイメージ。
結構前に作ったものだから古かったりイケてない書き方とかあっても許してね。

./
- docker-compose.yml
+ database/
  - Dockerfile
+ postgres-init/
  - init.sql
+ postgres/
FROM postgres:9.6.16

RUN localedef -i ja_JP -c -f UTF-8 -A /usr/share/locale/locale.alias ja_JP.UTF-8
ENV LANG ja_JP.utf8
docker-compose.yml
version: "3.5"

services:
  db:
    build:
      context: database
    volumes:
      - ./postgres:/var/lib/postgresql
      - ./postgres-init:/docker-entrypoint-initdb.d
    expose:
      - '5432'
    ports: 
      - "5434:5432"
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: postgres
      POSTGRES_INITDB_ARGS: "--encoding=UTF-8"
    restart: 'always'
    networks:
      - db-net

networks:
  db-net:
    driver: bridge
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

[Oracle Cloud] OCI Compute 上に Docker で Oracle Database 19c の 4 Node RAC 環境を構築する

1. はじめに

Docker で Oracle Database のシングルインスタンス環境を構築する記事は見かけますが、RAC (Real Application Clusters) 環境を構築する記事はそんなに無さそうだったので記事にしたいと思い、改めて手順確認の意味も込めて構築してみたいと思います。

今回は Oracle Cloud Infrastructure (以降、OCI) で作成した一つの Compute 上に、 Docker で 4つのコンテナを作成し、4 Node の RAC 環境を構築します。 もちろん、Node 数は調整可能です。

1-1. 注意

  • Docker で 構成された Oracle Database は検証環境や開発環境でのみ利用できます。本番環境での利用はできませんのでご注意ください。

  • 今回の環境とは違いますが、本来 OCI で RAC 構成がサポートされるのは DBCS, ExaCS, ExaCCといったサービスです。複数の Compute で RAC を構成することはできませんのでご注意ください。

1-2. 環境

  • Oracle Cloud Infrastructure Compute
  • Oracle Linux 7.9
  • Oracle Database 19c (19.3)
  • Oracle Database 19c Grid Infrastructure(19.3)
  • Docker

1-3. 参考ドキュメント

Oracle 公式 Github に記載の手順に従って構築していきます。

Oracle RAC Database on Docker

2. Compute の作成

まずは OCI で Compute を作成していきます。
OCI Console の左上のハンバーガーメニューをクリックし、[コンピュート] - [インスタンス] をクリックします。
image.png

インスタンスの作成をクリックします。
image.png

インスタンス名を入力してください。ADはどれを選択しても大丈夫です。
image.png

イメージは Oracle Linux のデフォルトで選択されるバージョンとしました。
シェイプは今回 4 Node RAC とするので、なんとなく4コアくらい欲しいかなと思い VM.Standard2.4としました。
image.png

ネットワーク(VCN)は事前に作成済みという前提です。今回はInternetから接続可能な Public Subnet に作成します。Internet 経由で接続するため、[パブリックIPアドレスの割当] も選択します。
image.png

SSHキーの追加はお好みの方法で構いません。今回は [SSHキー・ファイルの選択] で事前に作成していたSSHキーを登録しました。
image.png

デフォルトだとブート・ボリュームが46GB程度しかなく、Docker で Oracle Database を構成するにはちょっと足りません。おそらく100GB程度あれば大丈夫ですが、今回は余裕を持って200GBとします。
なお、ここで指定するサイズは、Oracle Database の データファイルを格納する ASMディスク分の容量は含みません。ASM 分は後ほど追加しますので、一旦は考慮しなくて大丈夫です。
image.png

各項目の入力を終えたら [作成] をクリックします。
image.png

インスタンスが [実行中] になったら作成完了です。
[パブリックIPアドレス] が表示されるので、このIPアドレスにSSHでログインします。
image.png

3. Compute にログイン

Teraterm等のSSHクライアントで、作成したComputeにログインします。
- 接続先 : [パブリックIPアドレス]
- ユーザ名 : opc
- パスフレーズ : SSHキー作成時に指定していれば、ここでも同じものを指定
- 秘密鍵 : Compute作成時に指定したSSH公開鍵と対になる秘密鍵を指定

image.png

ログインできました。
image.png

4. Compute OS設定

Computeを作成したらまずやること、的なのがいくつかあるのでやっていきます。

4-1. タイムゾーンの変更

タイムゾーンを Asia/Tokyo に変更します。

[opc@rac-instance01 ~]$ sudo timedatectl set-timezone Asia/Tokyo
[opc@rac-instance01 ~]$ timedatectl
      Local time: Fri 2021-01-01 16:18:26 JST
  Universal time: Fri 2021-01-01 07:18:26 UTC
        RTC time: Fri 2021-01-01 07:18:27
       Time zone: Asia/Tokyo (JST, +0900)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: n/a
[opc@rac-instance01 ~]$

4-2. ロケールの変更

ロケールを ja_JP.utf8 に変更します。これはお好みです。

[opc@rac-instance01 ~]$ sudo localectl set-locale LANG=ja_JP.utf8
[opc@rac-instance01 ~]$ localectl
   System Locale: LANG=ja_JP.utf8
       VC Keymap: us
      X11 Layout: us
[opc@rac-instance01 ~]$ cat /etc/locale.conf
LANG=ja_JP.utf8
[opc@rac-instance01 ~]$

4-3. ブート・ボリュームの拡張

Compute 作成の際に指定した 200GB は、デバイスとしては 200GB になっているのですが、ファイルシステムとしは変わっていないので、/ をマウントしている /dev/sda3 を拡張します。

まずは事前の状態の確認です。

[opc@rac-instance01 ~]$ lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0  200G  0 disk      ★200GBになっている
 -sda2   8:2    0    8G  0 part [SWAP]
 -sda3   8:3    0 38.4G  0 part /         ★約39GBしかない
 -sda1   8:1    0  200M  0 part /boot/efi

[opc@rac-instance01 ~]$ df -h /
ファイルシス   サイズ  使用  残り 使用% マウント位置
/dev/sda3         39G   11G   29G   27% /   ★39GBしかない

拡張には、OCI ユーティリティ の oci-growfs を利用します。

oci-growfs
https://docs.oracle.com/ja-jp/iaas/Content/Compute/References/oci-growfs.htm

インスタンスのルート・ファイルシステムを構成したサイズに拡張します。このコマンドはルートとして実行する必要があります。

oci-growfs を実行するだけでブート・ボリュームを拡張できるので非常に便利です。

[opc@rac-instance01 ~]$ sudo /usr/libexec/oci-growfs
CHANGE: partition=3 start=17188864 old: size=80486400 end=97675264 new: size=402241502 end=419430366
Confirm? [y/n]y    ★ y を入力してEnter
CHANGED: partition=3 start=17188864 old: size=80486400 end=97675264 new: size=402241502 end=419430366
meta-data=/dev/sda3              isize=256    agcount=4, agsize=2515200 blks
         =                       sectsz=4096  attr=2, projid32bit=1
         =                       crc=0        finobt=0, sparse=0, rmapbt=0
         =                       reflink=0
data     =                       bsize=4096   blocks=10060800, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=4912, version=2
         =                       sectsz=4096  sunit=1 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 10060800 to 50280187

[opc@rac-instance01 ~]$ lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0   200G  0 disk
 -sda2   8:2    0     8G  0 part [SWAP]
 -sda3   8:3    0 191.8G  0 part /          ★残りすべての容量が割り当てられた
 -sda1   8:1    0   200M  0 part /boot/efi

[opc@rac-instance01 ~]$ df -h /
ファイルシス   サイズ  使用  残り 使用% マウント位置
/dev/sda3        192G   11G  182G    6% /   ★残りすべての容量が割り当てられた

5. Compute Dockerホスト構築

Dockerホストとしての設定をしていきます。

5-1. yum アップデート

yum update しておきます。たぶん色々と更新するので時間かかります。

[opc@rac-instance01 ~]$ sudo yum update

5-2. git インストール

Oracle 公式の Docker Image をクローンするため、gitをインストールします。

[opc@rac-instance01 ~]$ sudo yum install git

5-3. Docker イメージのクローン

Oracle の Docker イメージをクローンします。

[opc@rac-instance01 ~]$ git clone https://github.com/oracle/docker-images.git
Cloning into 'docker-images'...
remote: Enumerating objects: 13371, done.
remote: Total 13371 (delta 0), reused 0 (delta 0), pack-reused 13371
Receiving objects: 100% (13371/13371), 9.75 MiB | 0 bytes/s, done.
Resolving deltas: 100% (7857/7857), done.

5-4. Oracle Database ソフトウェアの準備

Oracle Database の ソフトウェアの zip ファイルを準備します。

Oracle Database 19c (19.3)
https://www.oracle.com/database/technologies/oracle19c-linux-downloads.html
OTN ライセンスの範囲内で利用してください。

普通にブラウザでダウンロードして SCP や FTP 等で Compute にアップロードしても良いのですが、それだと時間かかるし面倒なので、今回は直接 Compute 上でダウンロードします。といっても、ファイルのURL直接だとダウンロードできないので、ちょっと小細工します。

19.3 の Download のリンクをクリックします。
image.png

ライセンスのチェックを入れ、Download のボタンをクリックします。
image.png

ダウンロードが始まったら、すぐにブラウザ上で一時停止します。
image.png

ブランザのダウンロードの画面を開きます。
image.png

対象のファイルのURLをコピーします。
image.png

Compute 上で zip を配置する場所へ移動し、コピーしたURLで直接ダウンロードします。

[opc@rac-instance01 ~]$ cd ~/docker-images/OracleDatabase/RAC/OracleRealApplicationClusters/dockerfiles/19.3.0/
[opc@rac-instance01 19.3.0]$ curl -0 https://download.oracle.com/otn/linux/oracle19c/190000/LINUX.X64_193000_db_home.zip?AuthParam=xxxxxxxxxx_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx > LINUX.X64_193000_db_home.zip
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
 58 2917M   58 1694M    0     0  75.0M      0  0:00:38  0:00:22  0:00:16 6193k

同様に、Grid Infrastructure の zip も同じ場所にダウンロードしてください。
image.png

5-5. yum リポジトリの準備

1年ほど前に構築したときは OCI Compute のデフォルトイメージが Oracle Linux 7.7 だったのですが、その際は docker-engine インストールのために yum リポジトリの追加が必要でした。
今回、デフォルトイメージが Oracle Linux 7.9 になっており、必要なリポジトリがデフォルトで存在したので不要でしたが、念の為手順を記しておきます。

[opc@rac-instance01 ~]$ cd /etc/yum.repos.d/
[opc@rac-instance01 yum.repos.d]$ grep 'ol7_addons' *.repo
oracle-linux-ol7.repo:[ol7_addons]            ★ol7_addons が存在する

ol7_addons を含むリポジトリファイルが存在すれば、当手順は不要です。SKIPしてください。
存在しない場合は以下の手順で追加してください。

[opc@rac-instance01 yum.repos.d]$ sudo wget http://yum.oracle.com/public-yum-ol7.repo
[opc@rac-instance01 yum.repos.d]$ vi public-yum-ol7.repo
-------------------------
[ol7_addons]
name=Oracle Linux $releasever Add ons ($basearch)
baseurl=http://yum.oracle.com/repo/OracleLinux/OL7/addons/$basearch/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
gpgcheck=1
enabled=1     <--- ★ここを0から1に変更する
-------------------------

5-6. docker-engine インストール

docker-engine をインストールします。

[opc@rac-instance01 ~]$ sudo yum install docker-engine

Docker を起動します。

[opc@rac-instance01 ~]$ sudo systemctl start docker
[opc@rac-instance01 ~]$ sudo systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
   Active: active (running) since 月 2021-01-04 19:45:07 JST; 3s ago

5-7. カーネルパラメータ設定

公式 Github の手順通りにカーネルパラメータを追加します。

[opc@rac-instance01 ~]$ sudo vi /etc/sysctl.conf
---- ★以下すべてを追記
fs.file-max = 6815744
net.core.rmem_max = 4194304
net.core.rmem_default = 262144
net.core.wmem_max = 1048576
net.core.wmem_default = 262144
net.core.rmem_default = 262144
----
[opc@rac-instance01 ~]$ sysctl -a
[opc@rac-instance01 ~]$ sudo sysctl -p

5-8. Docker 起動設定

docker.service の起動設定をします。
/usr/lib/systemd/system/docker.service の ExecStart を以下の内容に置き換えます。

 [opc@rac-instance01 ~]$ sudo vi /usr/lib/systemd/system/docker.service
---
ExecStart=/usr/bin/dockerd --cpu-rt-runtime=950000 --cpu-rt-period=1000000 --exec-opt=native.cgroupdriver=systemd
----

続いて、cgroup の設定を行います。
3つめは 95000 x node数 以上の値を入れます。今回は 4Node なので 95000 X 4 で
380000 ですが、余裕をもって 400000 とします。これをやっておかないと、後半のコンテナ起動でエラーが出て失敗しますので忘れずに設定しておきます。また、Dockerホストのサーバを再起動するとこの設定は消えてしまうので、ホストのサーバを起動するたびに設定されるようにしておくのがオススメです。

[root@rac-instance01 opc]# echo 950000 > /sys/fs/cgroup/cpu/cpu.rt_runtime_us
[root@rac-instance01 opc]# echo 1000000 > /sys/fs/cgroup/cpu/cpu.rt_period_us
[root@rac-instance01 opc]# echo 400000 > /sys/fs/cgroup/cpu,cpuacct/system.slice/cpu.rt_runtime_us

ここまで設定ができましたら、Docker を再起動します。

[opc@rac-instance01 ~]$ sudo systemctl daemon-reload
[opc@rac-instance01 ~]$ sudo systemctl restart docker
[opc@rac-instance01 ~]$ sudo systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
[opc@rac-instance01 ~]$ sudo systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
   Active: active (running) since 水 2021-01-06 21:35:11 JST; 9s ago
     Docs: https://docs.docker.com
 Main PID: 11610 (dockerd)
   CGroup: /system.slice/docker.service
           mq11610 /usr/bin/dockerd --cpu-rt-runtime=950000 --cpu-rt-period=1000000 --exec-opt=native.cgroupdriver=systemd

6. Docker 構築

Docker の構築をしていきます。

6-1. インストールイメージの構築

Oracle RAC Database の Docker インストールイメージを構築します。

[opc@rac-instance01 ~]$ cd ~/docker-images/OracleDatabase/RAC/OracleRealApplicationClusters/dockerfiles
[opc@rac-instance01 dockerfiles]$ sudo ./buildDockerImage.sh -v 19.3.0
Checking if required packages are present and valid...
LINUX.X64_193000_grid_home.zip: 完了

(中略)

  Oracle Database Docker Image for Real Application Clusters (RAC) version 19.3.0 is ready to be extended:

    --> oracle/database-rac:19.3.0

  Build completed in 988 seconds.

途中、こんなエラーがでる場合があります(私は100%遭遇します...)が、無視して大丈夫です。
(参考:https://github.com/oracle/docker-images/issues/1416)

/opt/scripts/install/installGridBinaries.sh: line 57:  : command not found

6-2. Docker ネットワーク設定

Docker コンテナ間のネットワークを設定します。
rac_pub1_nw がパブリックLAN、rac_priv1_nw がプライベートLANになります。

[opc@rac-instance01 dockerfiles]$ sudo docker network create --driver=bridge --subnet=172.16.1.0/24 rac_pub1_nw
b6d7984df77c6e42705bd242ee2e790882b2d9f5ff2ef20cf369b7105238adf4
[opc@rac-instance01 dockerfiles]$ sudo docker network create --driver=bridge --subnet=192.168.17.0/24 rac_priv1_nw
a47b39a3b43bebcc1d8a7676ac6786a581919f0dd20cab79c0ffbcb7005153ea

6-3. 共有ホストファイルの作成

全てのコンテナは、ホスト名の名前解決のために共有ホストファイルを使用します。共有ホストファイルはすべてのコンテナで利用可能である必要があるため、Docker ホスト上にファイルを作成します。
なお、現時点では空のファイルで大丈夫です。ノード作成時に自動的に hosts の中身が書き込まれます。

[opc@rac-instance01 dockerfiles]$ sudo mkdir /opt/containers
[opc@rac-instance01 dockerfiles]$ sudo touch /opt/containers/rac_host_file
[opc@rac-instance01 dockerfiles]$ ls -l /opt/containers/rac_host_file
-rw-r--r--. 1 root root 0  1月  6 22:12 /opt/containers/rac_host_file

6-4. パスワードファイルの作成

ノードの作成またはノードの追加中に、grid / oracle および データベースパスワードが必要になるため、事前にパスワードを暗号化したファイルを作成します。それぞれ個別にパスワードを設定可能ですが、今回は全て共通のパスワードで設定します。

[opc@rac-instance01 dockerfiles]$ sudo su -
[root@rac-instance01 ~]# mkdir /opt/.secrets/
[root@rac-instance01 ~]# openssl rand -hex 64 -out /opt/.secrets/pwd.key

echo で パスワードとする文字列をファイルにリダイレクトします。
今回は "oracle" としています。

[root@rac-instance01 ~]# echo oracle > /opt/.secrets/common_os_pwdfile
[root@rac-instance01 ~]# openssl enc -aes-256-cbc -salt -in /opt/.secrets/common_os_pwdfile -out /opt/.secrets/common_os_pwdfile.enc -pass file:/opt/.secrets/pwd.key

暗号化したファイルが作成できたら、平文のファイルは削除します。

[root@rac-instance01 ~]# rm -f /opt/.secrets/common_os_pwdfile

6-5. ASM 領域とする共有 DISK の作成

ASM 領域とするための共有DISK領域をブロックデバイスで作成します。
(RAC Storage Container という NAS 用のコンテナを立ててそこを共有 DISK とする方式もあるのですが、今回はブロックデバイス方式でいきます)

OCI Compute 作成時に拡張したブートボリュームは既に既存のファイルシステムに割り当てているので、別途ブート・ボリュームを拡張した上で新規パーティションを作成し、ASM 領域として使用します。なお、この作業は必ず 4.3 でブート・ボリュームを拡張した後で行ってください。これは、oci-growfs での拡張が、最終パーティション番号のパーティションにだけ有効であるためです。
(デフォルトでは / がマウントしている /dev/sda3 のパーティションが最後なので、oci-growfsで / が容易に拡張できる)

では、まず OCI Console でブロック・デバイスをオンライン拡張します。
OCI Console の左上のハンバーガーメニューをクリックし、[コンピュート]-[ブート・ボリューム]を選択します。
image.png

対象のブート・ボリュームを選択します。
image.png

[編集] をクリックします。
image.png

[ボリューム・サイズ(GB)] の入力欄に、希望のASMサイズ分プラスした値を入力します。今回は100GB分をASMとするため、元々の 200GB から 100GB 足して、300GB とします。
入力したら、[変更の保存] をクリックします。
image.png

するとこんなのが出るので、[再スキャン・コマンド] を控えておきます。
image.png

アイコンがオレンジから、グリーンの[使用可能]に戻ったら、OCI Console での作業は完了です。
image.png

現在のブロック・デバイスの状態を確認します。
特に変わっていません。

[opc@rac-instance01 dockerfiles]$ lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0   200G  0 disk              ★200GBのまま
tqsda2   8:2    0     8G  0 part [SWAP]
tqsda3   8:3    0 191.8G  0 part /
mqsda1   8:1    0   200M  0 part /boot/efi

先程 OCI Console で控えた再スキャン・コマンドを実行し、ブロックデバイスの拡張を OS に認識させます。

[opc@rac-instance01 dockerfiles]$ sudo dd iflag=direct if=/dev/oracleoci/oraclevda of=/dev/null count=1
echo "1" | sudo tee /sys/class/block/`readlink /dev/oracleoci/oraclevda | cut -d'/' -f 2`/device/rescan1+0 レコード入力
1+0 レコード出力
512 バイト (512 B) コピーされました、 0.000896604 秒、 571 kB/秒
[opc@rac-instance01 dockerfiles]$ echo "1" | sudo tee /sys/class/block/`readlink /dev/oracleoci/oraclevda | cut -d'/' -f 2`/device/rescan
1

改めて、ブロック・デバイスの状態を確認します。
300GBに拡張されていることが確認できます。

[opc@rac-instance01 dockerfiles]$ lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0   300G  0 disk              ★300GBになっている
tqsda2   8:2    0     8G  0 part [SWAP]
tqsda3   8:3    0 191.8G  0 part /
mqsda1   8:1    0   200M  0 part /boot/efi

拡張したブロックデバイスに、パーティションを追加します。
parted 実行直後にエラーや警告が出ますが、Fixしておきます。

[opc@rac-instance01 ~]$ sudo -s
[root@rac-instance01 opc]# parted /dev/sda
(parted) print
エラー: あるべき GPT テーブルのバックアップがディスクの最後にありません。他の OS がディスクはもっと小さいものだと思っているのかもしれません。バックアップを最後に持ってきて(古いバックアップを削除して)修復しますか?
修正/Fix/無視(I)/Ignore/取消(C)/Cancel? Fix
警告: /dev/sda で利用可能な領域の一部が利用されていません。GPT を修正して全ての領域を利用可能にするか(209715200 ブロック増えます)、このままで続行することができますが、どうしますか?
修正/Fix/無視(I)/Ignore? Fix

番号  開始    終了    サイズ  ファイルシステム  名前                  フラグ
 1    1049kB  211MB   210MB   fat16             EFI System Partition  boot
 2    211MB   8801MB  8590MB  linux-swap(v1)
 3    8801MB  215GB   206GB   xfs

最後のパーティション番号の終了のサイズから 100% を割り当てます。
今回は、番号3の終了の 215GB を始点とします。

(parted) mkpart gpt 215GB 100%

確認すると、パーティション番号4 ができています。

(parted) print

番号  開始    終了    サイズ  ファイルシステム  名前                  フラグ
 1    1049kB  211MB   210MB   fat16             EFI System Partition  boot
 2    211MB   8801MB  8590MB  linux-swap(v1)
 3    8801MB  215GB   206GB   xfs
 4    215GB   322GB   107GB                     gpt

(parted) q

作成したパーティションは /dev/sda4 です。

[root@rac-instance01 opc]# lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0   300G  0 disk
 -sda4   8:4    0   100G  0 part           ★作成したパーティション
 -sda2   8:2    0     8G  0 part [SWAP]
 -sda3   8:3    0 191.8G  0 part /
 -sda1   8:1    0   200M  0 part /boot/efi

追加したパーティションを初期化します。

[root@rac-instance01 opc]# dd if=/dev/zero of=/dev/sda4  bs=8k count=100000
100000+0 レコード入力
100000+0 レコード出力
819200000 バイト (819 MB) コピーされました、 4.09183 秒、 200 MB/秒

7. Oracle Database RAC Node1 の作成

7-1. Docker コンテナの作成

RACノード1つ目のコンテナを作成します。オプションで色々変更可能です。Github の手順の最後らへんに各種オプションの説明があります。

[opc@rac-instance01 ~]$ sudo docker create -t -i \
    --hostname racnode1 \
    --volume /boot:/boot:ro \
    --volume /dev/shm \
    --tmpfs /dev/shm:rw,exec,size=4G \
    --volume /opt/containers/rac_host_file:/etc/hosts  \
    --volume /opt/.secrets:/run/secrets \
    --device=/dev/sda4:/dev/asm_disk1  \
    --privileged=false  \
    --cap-add=SYS_NICE \
    --cap-add=SYS_RESOURCE \
    --cap-add=NET_ADMIN \
    -e NODE_VIP=172.16.1.160 \
    -e VIP_HOSTNAME=racnode1-vip  \
    -e PRIV_IP=192.168.17.150 \
    -e PRIV_HOSTNAME=racnode1-priv \
    -e PUBLIC_IP=172.16.1.150 \
    -e PUBLIC_HOSTNAME=racnode1  \
    -e SCAN_NAME=racnode-scan \
    -e SCAN_IP=172.16.1.70  \
    -e OP_TYPE=INSTALL \
    -e DOMAIN=example.com \
    -e ASM_DEVICE_LIST=/dev/asm_disk1 \
    -e ORACLE_SID=ORCL \
    -e ASM_DISCOVERY_DIR=/dev \
    -e CMAN_HOSTNAME=racnode-cman1 \
    -e CMAN_IP=172.16.1.15 \
    -e COMMON_OS_PWD_FILE=common_os_pwdfile.enc \
    -e PWD_KEY=pwd.key \
    --restart=always --tmpfs=/run -v /sys/fs/cgroup:/sys/fs/cgroup:ro \
    --cpu-rt-runtime=95000 --ulimit rtprio=99  \
    --name racnode1 \
    oracle/database-rac:19.3.0

7-2. コンテナにネットワークを割り当てる

作成したコンテナにネットワークを割り当てます。

[opc@rac-instance01 ~]$ sudo docker network disconnect bridge racnode1
[opc@rac-instance01 ~]$ sudo docker network connect rac_pub1_nw --ip 172.16.1.150 racnode1
[opc@rac-instance01 ~]$ sudo docker network connect rac_priv1_nw --ip 192.168.17.150  racnode1

7-3. RAC コンテナの起動 (RAC Node 1)

ここからが本番です。RAC 1ノード目のコンテナを起動します。
このコンテナ起動により、GI/DBのインストールやDB作成、RACの構成が行われます。

[opc@rac-instance01 ~]$ sudo docker start racnode1
racnode1

起動コマンド自体はすぐリターンが返ります。
以下のコマンドでログを確認し、エラーが起きないことを確認します。
完了まで早くても40分~1時間程度はかかります。

[opc@rac-instance01 ~]$ sudo docker logs -f racnode1

成功すれば、最後に以下のメッセージが表示されます。

####################################
ORACLE RAC DATABASE IS READY TO USE!
####################################

もし途中で何らかのエラーが発生して処理が止まってしまった場合は、以下のコマンドでコンテナにログインし、/tmp/orod.log や $GRID_BASE/diag/crs 等に出力されているログを確認してください。

[opc@rac-instance01 ~]$ sudo docker exec -i -t racnode1 /bin/bash

起動が成功したのでコンテナにログインして確認してみます。

[opc@rac-instance01 ~]$ sudo docker exec -i -t racnode1 /bin/bash
[grid@racnode1 ~]$ sudo su - oracle
[oracle@racnode1 ~]$ /u01/app/19.3.0/grid/bin/crsctl stat res -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.LISTENER.lsnr
               ONLINE  ONLINE       racnode1                 STABLE
ora.chad
               ONLINE  ONLINE       racnode1                 STABLE
ora.net1.network
               ONLINE  ONLINE       racnode1                 STABLE
ora.ons
               ONLINE  ONLINE       racnode1                 STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ASMNET1LSNR_ASM.lsnr(ora.asmgroup)
      1        ONLINE  ONLINE       racnode1                 STABLE
      2        OFFLINE OFFLINE                               STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.DATA.dg(ora.asmgroup)
      1        ONLINE  ONLINE       racnode1                 STABLE
      2        OFFLINE OFFLINE                               STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.LISTENER_SCAN1.lsnr
      1        ONLINE  ONLINE       racnode1                 STABLE
ora.asm(ora.asmgroup)
      1        ONLINE  ONLINE       racnode1                 Started,STABLE
      2        OFFLINE OFFLINE                               STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.asmnet1.asmnetwork(ora.asmgroup)
      1        ONLINE  ONLINE       racnode1                 STABLE
      2        OFFLINE OFFLINE                               STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.cvu
      1        ONLINE  ONLINE       racnode1                 STABLE
ora.orcl.db
      1        ONLINE  ONLINE       racnode1                 Open,HOME=/u01/app/o
                                                             racle/product/19.3.0
                                                             /dbhome_1,STABLE
ora.qosmserver
      1        ONLINE  ONLINE       racnode1                 STABLE
ora.racnode1.vip
      1        ONLINE  ONLINE       racnode1                 STABLE
ora.scan1.vip
      1        ONLINE  ONLINE       racnode1                 STABLE
--------------------------------------------------------------------------------
[oracle@racnode1 ~]$ exit
logout
[grid@racnode1 ~]$ exit
exit
[opc@rac-instance01 ~]$

問題無さそうなので、引き続き2ノード目以降を作成していきます。

8. Oracle Database RAC Node2 の追加

8-1. Docker コンテナの作成

先程作成した RAC環境に、2ノード目を追加します。
基本的に手順は同じですが、オプションで指定する内容が少しだけ違います。(ホスト名、ノード名、IPアドレス、CLS既存ノードの指定、ノード追加オプションなど)

[opc@rac-instance01 ~]$ sudo docker create -t -i \
    --hostname racnode2 \
    --volume /dev/shm \
    --tmpfs /dev/shm:rw,exec,size=4G  \
    --volume /boot:/boot:ro \
    --dns-search=example.com  \
    --volume /opt/containers/rac_host_file:/etc/hosts \
    --volume /opt/.secrets:/run/secrets \
    --device=/dev/sda4:/dev/asm_disk1  \
    --privileged=false \
    --cap-add=SYS_NICE \
    --cap-add=SYS_RESOURCE \
    --cap-add=NET_ADMIN \
    -e EXISTING_CLS_NODES=racnode1 \   ★既存ノードを指定する
    -e NODE_VIP=172.16.1.161  \
    -e VIP_HOSTNAME=racnode2-vip  \
    -e PRIV_IP=192.168.17.151  \
    -e PRIV_HOSTNAME=racnode2-priv \
    -e PUBLIC_IP=172.16.1.151  \
    -e PUBLIC_HOSTNAME=racnode2  \
    -e DOMAIN=example.com \
    -e SCAN_NAME=racnode-scan \
    -e SCAN_IP=172.16.1.70 \
    -e ASM_DISCOVERY_DIR=/dev \
    -e ASM_DEVICE_LIST=/dev/asm_disk1\
    -e ORACLE_SID=ORCL \
    -e OP_TYPE=ADDNODE \              ★ノード追加オプション
    -e COMMON_OS_PWD_FILE=common_os_pwdfile.enc \
    -e PWD_KEY=pwd.key \
    --tmpfs=/run -v /sys/fs/cgroup:/sys/fs/cgroup:ro \
    --cpu-rt-runtime=95000 --ulimit rtprio=99  \
    --restart=always \
    --name racnode2 \
    oracle/database-rac:19.3.0

8-2. コンテナにネットワークを割り当てる

作成したコンテナにネットワークを割り当てます。

[opc@rac-instance01 ~]$ sudo docker network disconnect bridge racnode2
[opc@rac-instance01 ~]$ sudo docker network connect rac_pub1_nw --ip 172.16.1.151 racnode2
[opc@rac-instance01 ~]$ sudo docker network connect rac_priv1_nw --ip 192.168.17.151  racnode2

8-3. RAC コンテナの起動 (RAC Node 2)

RAC 2ノード目のコンテナを起動します。やることは 1ノード目と同じです。

[opc@rac-instance01 ~]$ sudo docker start racnode2
racnode2

以下のコマンドでログを確認し、エラーが起きないことを確認します。

[opc@rac-instance01 ~]$ sudo docker logs -f racnode2

成功すれば、最後に以下のメッセージが表示されます。
2ノード目以降は、1ノード目のときよりは時間はかかりません。今回の環境では10分程度で終わりました。

####################################
ORACLE RAC DATABASE IS READY TO USE!
####################################

起動が成功したので、ログインして確認します。

[opc@rac-instance01 ~]$ sudo docker exec -i -t racnode2 /bin/bash
[grid@racnode2 ~]$ sudo su - oracle
[oracle@racnode2 ~]$ /u01/app/19.3.0/grid/bin/crsctl stat res -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.LISTENER.lsnr
               ONLINE  ONLINE       racnode1                 STABLE
               ONLINE  ONLINE       racnode2                 STABLE
ora.chad
               ONLINE  ONLINE       racnode1                 STABLE
               ONLINE  ONLINE       racnode2                 STABLE
ora.net1.network
               ONLINE  ONLINE       racnode1                 STABLE
               ONLINE  ONLINE       racnode2                 STABLE
ora.ons
               ONLINE  ONLINE       racnode1                 STABLE
               ONLINE  ONLINE       racnode2                 STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ASMNET1LSNR_ASM.lsnr(ora.asmgroup)
      1        ONLINE  ONLINE       racnode1                 STABLE
      2        ONLINE  ONLINE       racnode2                 STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.DATA.dg(ora.asmgroup)
      1        ONLINE  ONLINE       racnode1                 STABLE
      2        ONLINE  ONLINE       racnode2                 STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.LISTENER_SCAN1.lsnr
      1        ONLINE  ONLINE       racnode1                 STABLE
ora.asm(ora.asmgroup)
      1        ONLINE  ONLINE       racnode1                 Started,STABLE
      2        ONLINE  ONLINE       racnode2                 Started,STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.asmnet1.asmnetwork(ora.asmgroup)
      1        ONLINE  ONLINE       racnode1                 STABLE
      2        ONLINE  ONLINE       racnode2                 STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.cvu
      1        ONLINE  ONLINE       racnode1                 STABLE
ora.orcl.db
      1        ONLINE  ONLINE       racnode1                 Open,HOME=/u01/app/o
                                                             racle/product/19.3.0
                                                             /dbhome_1,STABLE
      2        ONLINE  ONLINE       racnode2                 Open,HOME=/u01/app/o
                                                             racle/product/19.3.0
                                                             /dbhome_1,STABLE
ora.qosmserver
      1        ONLINE  ONLINE       racnode1                 STABLE
ora.racnode1.vip
      1        ONLINE  ONLINE       racnode1                 STABLE
ora.racnode2.vip
      1        ONLINE  ONLINE       racnode2                 STABLE
ora.scan1.vip
      1        ONLINE  ONLINE       racnode1                 STABLE
--------------------------------------------------------------------------------

問題無く2ノード目が追加されていました。
引き続き3ノード目を追加します。

9. Oracle Database RAC Node3 の追加

9-1. Docker コンテナの作成

RAC環境に、3ノード目を追加します。2ノード目と手順、変更点は全く同じです。

[opc@rac-instance01 ~]$ sudo docker create -t -i \
  --hostname racnode3 \
  --volume /dev/shm \
  --tmpfs /dev/shm:rw,exec,size=4G  \
  --volume /boot:/boot:ro \
  --dns-search=example.com  \
  --volume /opt/containers/rac_host_file:/etc/hosts \
  --volume /opt/.secrets:/run/secrets \
  --device=/dev/sda4:/dev/asm_disk1  \
  --privileged=false \
  --cap-add=SYS_NICE \
  --cap-add=SYS_RESOURCE \
  --cap-add=NET_ADMIN \
  -e EXISTING_CLS_NODES=racnode1,racnode2 \  ★既存ノードを指定する
  -e NODE_VIP=172.16.1.162  \
  -e VIP_HOSTNAME=racnode3-vip  \
  -e PRIV_IP=192.168.17.152  \
  -e PRIV_HOSTNAME=racnode3-priv \
  -e PUBLIC_IP=172.16.1.152  \
  -e PUBLIC_HOSTNAME=racnode3  \
  -e DOMAIN=example.com \
  -e SCAN_NAME=racnode-scan \
  -e SCAN_IP=172.16.1.70 \
  -e ASM_DISCOVERY_DIR=/dev \
  -e ASM_DEVICE_LIST=/dev/asm_disk1\
  -e ORACLE_SID=ORCL \
  -e OP_TYPE=ADDNODE \                      ★ノード追加オプション
  -e COMMON_OS_PWD_FILE=common_os_pwdfile.enc \
  -e PWD_KEY=pwd.key \
  --tmpfs=/run -v /sys/fs/cgroup:/sys/fs/cgroup:ro \
  --cpu-rt-runtime=95000 --ulimit rtprio=99  \
  --restart=always \
  --name racnode3 \
  oracle/database-rac:19.3.0

9-2. コンテナにネットワークを割り当てる

作成したコンテナにネットワークを割り当てます。

[opc@rac-instance01 ~]$ sudo docker network disconnect bridge racnode3
[opc@rac-instance01 ~]$ sudo docker network connect rac_pub1_nw --ip 172.16.1.152 racnode3
[opc@rac-instance01 ~]$ sudo docker network connect rac_priv1_nw --ip 192.168.17.152  racnode3

9-3. RAC コンテナの起動 (RAC Node 3)

RAC 3ノード目のコンテナを起動します。
やることは 2ノード目と同じです。

[opc@rac-instance01 ~]$ sudo docker start racnode3
racnode3

以下のコマンドでログを確認し、エラーが起きないことを確認します。

[opc@rac-instance01 ~]$ sudo docker logs -f racnode3

成功すれば、最後に以下のメッセージが表示されます。
2ノード目以降は、1ノード目のときよりは時間はかかりません。今回の環境では10分程度で終わりました。

####################################
ORACLE RAC DATABASE IS READY TO USE!
####################################

起動が成功したので、ログインして確認します。

[opc@rac-instance01 ~]$ sudo docker exec -i -t racnode3 /bin/bash
[grid@racnode3 ~]$ sudo su - oracle
[oracle@racnode3 ~]$ /u01/app/19.3.0/grid/bin/crsctl stat res -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.LISTENER.lsnr
               ONLINE  ONLINE       racnode1                 STABLE
               ONLINE  ONLINE       racnode2                 STABLE
               ONLINE  ONLINE       racnode3                 STABLE
ora.chad
               ONLINE  ONLINE       racnode1                 STABLE
               ONLINE  ONLINE       racnode2                 STABLE
               ONLINE  ONLINE       racnode3                 STABLE
ora.net1.network
               ONLINE  ONLINE       racnode1                 STABLE
               ONLINE  ONLINE       racnode2                 STABLE
               ONLINE  ONLINE       racnode3                 STABLE
ora.ons
               ONLINE  ONLINE       racnode1                 STABLE
               ONLINE  ONLINE       racnode2                 STABLE
               ONLINE  ONLINE       racnode3                 STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ASMNET1LSNR_ASM.lsnr(ora.asmgroup)
      1        ONLINE  ONLINE       racnode1                 STABLE
      2        ONLINE  ONLINE       racnode2                 STABLE
      3        ONLINE  ONLINE       racnode3                 STABLE
ora.DATA.dg(ora.asmgroup)
      1        ONLINE  ONLINE       racnode1                 STABLE
      2        ONLINE  ONLINE       racnode2                 STABLE
      3        ONLINE  ONLINE       racnode3                 STABLE
ora.LISTENER_SCAN1.lsnr
      1        ONLINE  ONLINE       racnode1                 STABLE
ora.asm(ora.asmgroup)
      1        ONLINE  ONLINE       racnode1                 Started,STABLE
      2        ONLINE  ONLINE       racnode2                 Started,STABLE
      3        ONLINE  ONLINE       racnode3                 Started,STABLE
ora.asmnet1.asmnetwork(ora.asmgroup)
      1        ONLINE  ONLINE       racnode1                 STABLE
      2        ONLINE  ONLINE       racnode2                 STABLE
      3        ONLINE  ONLINE       racnode3                 STABLE
ora.cvu
      1        ONLINE  ONLINE       racnode1                 STABLE
ora.orcl.db
      1        ONLINE  ONLINE       racnode1                 Open,HOME=/u01/app/o
                                                             racle/product/19.3.0
                                                             /dbhome_1,STABLE
      2        ONLINE  ONLINE       racnode2                 Open,HOME=/u01/app/o
                                                             racle/product/19.3.0
                                                             /dbhome_1,STABLE
      3        ONLINE  ONLINE       racnode3                 Open,HOME=/u01/app/o
                                                             racle/product/19.3.0
                                                             /dbhome_1,STABLE
ora.qosmserver
      1        ONLINE  ONLINE       racnode1                 STABLE
ora.racnode1.vip
      1        ONLINE  ONLINE       racnode1                 STABLE
ora.racnode2.vip
      1        ONLINE  ONLINE       racnode2                 STABLE
ora.racnode3.vip
      1        ONLINE  ONLINE       racnode3                 STABLE
ora.scan1.vip
      1        ONLINE  ONLINE       racnode1                 STABLE
--------------------------------------------------------------------------------

問題無く3ノード目が追加されました。
引き続き、最後の4ノード目を追加します。

10. Oracle Database RAC Node4 の追加

10-1. Docker コンテナの作成

RAC環境に、4ノード目を追加します。2,3ノード目と手順、変更点は全く同じです。

[opc@rac-instance01 ~]$ sudo docker create -t -i \
    --hostname racnode4 \
    --volume /dev/shm \
    --tmpfs /dev/shm:rw,exec,size=4G  \
    --volume /boot:/boot:ro \
    --dns-search=example.com  \
    --volume /opt/containers/rac_host_file:/etc/hosts \
    --volume /opt/.secrets:/run/secrets \
    --device=/dev/sda4:/dev/asm_disk1  \
    --privileged=false \
    --cap-add=SYS_NICE \
    --cap-add=SYS_RESOURCE \
    --cap-add=NET_ADMIN \
    -e EXISTING_CLS_NODES=racnode1,racnode2,racnode3 \
    -e NODE_VIP=172.16.1.163  \
    -e VIP_HOSTNAME=racnode4-vip  \
    -e PRIV_IP=192.168.17.153  \
    -e PRIV_HOSTNAME=racnode4-priv \
    -e PUBLIC_IP=172.16.1.153  \
    -e PUBLIC_HOSTNAME=racnode4  \
    -e DOMAIN=example.com \
    -e SCAN_NAME=racnode-scan \
    -e SCAN_IP=172.16.1.70 \
    -e ASM_DISCOVERY_DIR=/dev \
    -e ASM_DEVICE_LIST=/dev/asm_disk1\
    -e ORACLE_SID=ORCL \
    -e OP_TYPE=ADDNODE \
    -e COMMON_OS_PWD_FILE=common_os_pwdfile.enc \
    -e PWD_KEY=pwd.key \
    --tmpfs=/run -v /sys/fs/cgroup:/sys/fs/cgroup:ro \
    --cpu-rt-runtime=95000 --ulimit rtprio=99  \
    --restart=always \
    --name racnode4 \
    oracle/database-rac:19.3.0

10-2. コンテナにネットワークを割り当てる

作成したコンテナにネットワークを割り当てます。

[opc@rac-instance01 ~]$ sudo docker network disconnect bridge racnode4
[opc@rac-instance01 ~]$ sudo docker network connect rac_pub1_nw --ip 172.16.1.153 racnode4
[opc@rac-instance01 ~]$ sudo docker network connect rac_priv1_nw --ip 192.168.17.153  racnode4

10-3. RAC コンテナの起動 (RAC Node 4)

RAC 4ノード目のコンテナを起動します。
やることは 2,3ノード目と同じです。

[opc@rac-instance01 ~]$ sudo docker start racnode4
racnode4

以下のコマンドでログを確認し、エラーが起きないことを確認します。

[opc@rac-instance01 ~]$ sudo docker logs -f racnode4

成功すれば、最後に以下のメッセージが表示されます。

####################################
ORACLE RAC DATABASE IS READY TO USE!
####################################

起動が成功したので、ログインして確認します。

[opc@rac-instance01 ~]$ sudo docker exec -i -t racnode4 /bin/bash
[grid@racnode4 ~]$ sudo su - oracle
[oracle@racnode4 ~]$ /u01/app/19.3.0/grid/bin/crsctl stat res -t

--------------------------------------------------------------------------------
Name           Target  State        Server                   State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.LISTENER.lsnr
               ONLINE  ONLINE       racnode1                 STABLE
               ONLINE  ONLINE       racnode2                 STABLE
               ONLINE  ONLINE       racnode3                 STABLE
               ONLINE  ONLINE       racnode4                 STABLE
ora.chad
               ONLINE  ONLINE       racnode1                 STABLE
               ONLINE  ONLINE       racnode2                 STABLE
               ONLINE  ONLINE       racnode3                 STABLE
               ONLINE  ONLINE       racnode4                 STABLE
ora.net1.network
               ONLINE  ONLINE       racnode1                 STABLE
               ONLINE  ONLINE       racnode2                 STABLE
               ONLINE  ONLINE       racnode3                 STABLE
               ONLINE  ONLINE       racnode4                 STABLE
ora.ons
               ONLINE  ONLINE       racnode1                 STABLE
               ONLINE  ONLINE       racnode2                 STABLE
               ONLINE  ONLINE       racnode3                 STABLE
               ONLINE  ONLINE       racnode4                 STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ASMNET1LSNR_ASM.lsnr(ora.asmgroup)
      1        ONLINE  ONLINE       racnode1                 STABLE
      2        ONLINE  ONLINE       racnode2                 STABLE
      3        ONLINE  ONLINE       racnode3                 STABLE
ora.DATA.dg(ora.asmgroup)
      1        ONLINE  ONLINE       racnode1                 STABLE
      2        ONLINE  ONLINE       racnode2                 STABLE
      3        ONLINE  ONLINE       racnode3                 STABLE
ora.LISTENER_SCAN1.lsnr
      1        ONLINE  ONLINE       racnode1                 STABLE
ora.asm(ora.asmgroup)
      1        ONLINE  ONLINE       racnode1                 Started,STABLE
      2        ONLINE  ONLINE       racnode2                 Started,STABLE
      3        ONLINE  ONLINE       racnode3                 Started,STABLE
ora.asmnet1.asmnetwork(ora.asmgroup)
      1        ONLINE  ONLINE       racnode1                 STABLE
      2        ONLINE  ONLINE       racnode2                 STABLE
      3        ONLINE  ONLINE       racnode3                 STABLE
ora.cvu
      1        ONLINE  ONLINE       racnode1                 STABLE
ora.orcl.db
      1        ONLINE  ONLINE       racnode1                 Open,HOME=/u01/app/o
                                                             racle/product/19.3.0
                                                             /dbhome_1,STABLE
      2        ONLINE  ONLINE       racnode2                 Open,HOME=/u01/app/o
                                                             racle/product/19.3.0
                                                             /dbhome_1,STABLE
      3        ONLINE  ONLINE       racnode3                 Open,HOME=/u01/app/o
                                                             racle/product/19.3.0
                                                             /dbhome_1,STABLE
      4        ONLINE  ONLINE       racnode4                 Open,HOME=/u01/app/o
                                                             racle/product/19.3.0
                                                             /dbhome_1,STABLE
ora.qosmserver
      1        ONLINE  ONLINE       racnode1                 STABLE
ora.racnode1.vip
      1        ONLINE  ONLINE       racnode1                 STABLE
ora.racnode2.vip
      1        ONLINE  ONLINE       racnode2                 STABLE
ora.racnode3.vip
      1        ONLINE  ONLINE       racnode3                 STABLE
ora.racnode4.vip
      1        ONLINE  ONLINE       racnode4                 STABLE
ora.scan1.vip
      1        ONLINE  ONLINE       racnode1                 STABLE
--------------------------------------------------------------------------------

問題無く4ノード目が追加されました。

11. Database ログイン確認

DBにログインできるか確認してみます。

[opc@rac-instance01 ~]$ sudo docker exec -i -t racnode1 /bin/bash
[grid@racnode1 ~]$ export ORACLE_HOME=`echo ${DB_HOME}`
[grid@racnode1 ~]$ export ORACLE_SID=ORCL1
[grid@racnode1 ~]$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Wed Jan 6 16:12:43 2021
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 ORCLPDB                        READ WRITE NO

SQL> exit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

ログインできました。PDBも作成されています。

以上で完了です。

12. あとがき

これで OCI Compute 上に Docker で Oracle Database 19c の 4 Node RAC 環境が構築ができました。

この環境に Oracle Data Guard の Physical Standby コンテナを作成できたりもするのですが、それはまた別の機会に書きたいと思います。

なお、今回 OCI Compute 上で環境を構築しましたが、クラウド環境でなくて Virtual Box でも構築可能ですし実績もあります。新しめの Virtual Box であれば、Virtual Box で構築したイメージをそのまま OCI に移行するなんてこともできると思います。

最後に、冒頭でも記載しましたが、Docker に構築した Oracle Database 環境は検証・開発目的のみで利用可能です。決して本番環境では使用しないようにお願いいたします。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

CI/CDパイプラインとDocker

Dockerを使ったCI/CDパイプラインを学習したときのメモです。

CI/CDとは

CI/CDのプロセス

画像引用:ThikIT「DevOps、CI/CDパイプラインでもコンテナは大活躍!」

継続的インテグレーション、継続的デリバリー(デプロイ)するためのプロセスを仕組み化。CIツールの代表的なものに以下がある。

  • Jenkins
  • Travis CI
  • circleci
  • Git Hub Actions

CI/CDとGitコマンド

TravisCI+Docker+Heroku+Railsを使った例。TravisCIの流れとGitコマンドのみ記載。

ワークディレクトリに以下YAMLファイルを格納。

sudo: required

services: docker

before_install:
  - docker-compose up --build -d
  - docker login -u "$HEROKU_USERNAME" -p "$HEROKU_API_KEY" registry.heroku.com 

script:
  - docker-compose exec --env 'RAILS_ENV=test' web rails db:create
  - docker-compose exec --env 'RAILS_ENV=test' web rails db:migrate
  - docker-compose exec --env 'RAILS_ENV=test' web rails test

deploy:
  provider: script
  script:
    docker build -t registry.heroku.com/$HEROKU_APP_NAME/web -f Dockerfile.prod .;
    docker push registry.heroku.com/$HEROKU_APP_NAME/web;
    heroku run --app $HEROKU_APP_NAME rails db:migrate;
  on:
    branch: master

権限の設定、Dockerを使う、コンテナを起動、DB準備、テスト実行、デプロイ実行(gitブランチがmasterの場合のみ)が順番に記述されている。

featureブランチを作成

$ git checkout -b feature

変更したファイルをGitのステージングに上げる

$ git add .

変更をコミットする

$ git commit -m '<commit message>'

featureブランチにpush

$ git push origin feature

TravisCIのbuildが走り、テストコードが実行される。

GitHubでプルリクエストを作成・Merge

GitでMasterブランチに反映されることで、TravisCIのbuildが走り、アプリがデプロイされる。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

MacBookでOracle DatabaseとWebLogicのDockerイメージを動かしてみてみた

■ 目的

WebLogic 12.2 は、GitHubで公開されているサンプルのdocker-images、もしくはORACLEで提供しているContainer Registryを使用できます。
MacBookへ Dockerをインストールして、Oracle Databaseと WebLogic ServerのDockerイメージを稼働させてみてみます。
今回使用するDockerは、Oracle LiveLabsにあるDocker Imageを使ってみます。

■ Dockerインストール

● Dockerインストール

1) Get Docker画面
https://docs.docker.com/get-docker/ へアクセスし、[Docker Desktop for Mac]をクリック
01_Docker.png

2) Install Docker Desktop on Mac画面
[Download from Docker Hub]をクリック
01_Docker02.png

3) Docker Desktop for Mac画面
[Get Docker]をクリック
01_Docker03.png

4) Dockerインストール
Down loadしたDockerファイルをクリックし、Applicationsアイコンへドラッグ&ドロップしてインストール
01_Docker06.png

● Dockerセットアップ

1) Dockerアイコンクリック
01_Docker07.png

2) Get Started with Docker画面
[Start]をクリック
01_Docker08.png

3) First, clone a repository画面
Clone the repository by running Git ina container
画面にある以下コマンドをコピーして実行し完了したら、[Next Step]をクリック

[shirok@macbook: ~]$ docker run --name repo alpine/git clone https://github.com/docker/getting-started.git
[shirok@macbook: ~]$ docker cp repo:/git/getting-started/ .

01_Docker09.png

4) Now,build the image画面
画面にある以下コマンドをコピーして実行し完了したら、[Next Step]をクリック

[shirok@macbook: ~]$ cd getting-started 

01_Docker11.png

5) Run your first container画面
画面にある以下コマンドをコピーして実行し完了したら、[Next Step]をクリック

[shirok@macbook: ~]$ docker run -d -p 80:80 --name docker-tutorial docker101tutorial

01_Docker12.png

6) Now save and share your image
[Sign in here]をクリック
01_Docker15.png

7) Run your first container画面
[Next Step]をクリック
01_Docker12.png

8) No containers running画面
画面にある以下コマンドをコピーして実行

[shirok@macbook: ~]$ docker run -d -p 80:80 docker/getting-started
    Unable to find image 'docker/getting-started:latest' locally
    latest: Pulling from docker/getting-started
    188c0c94c7c5: Pull complete
    617561f33ec6: Pull complete
    7d856acdaa9c: Pull complete
    a0d3c6e28e6d: Pull complete
    af69a9b963c8: Pull complete
    0739f3815ad8: Pull complete
    7c7b75d0baf8: Pull complete
    Digest: sha256:b821569034e3b5fae03b40e64a866017067f3bf17effe185b782bdbf02179528
    Status: Downloaded newer image for docker/getting-started:latest
    d27ed099d05049cd358d2bb6214e025c8c94a2ce482a382e5723159767896f72

01_Docker16.png

■ WebLogicコンテナ入手

wgetでWebLogicコンテナを入手します。
wgetコマンドがインストールされていない場合、インストールします

● Homebrewインストール

MacBookで wgetコマンドを使えるようにするためにHomebrewをインストール

1)Homebrewホームページへアクセス
https://brew.sh/index_ja へアクセスし、インストール項目にあるコマンドをコピーし、macOSのターミナル貼り付けてインストール
01.png

2) インストール実行

[shirok@macbook: ~]$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
    Password:
    ==> This script will install:
    /usr/local/bin/brew
    /usr/local/share/doc/homebrew
    /usr/local/share/man/man1/brew.1
    /usr/local/share/zsh/site-functions/_brew
    /usr/local/etc/bash_completion.d/brew
    /usr/local/Homebrew
    ==> The following existing directories will be made group writable:
    /usr/local/bin
    ==> The following existing directories will have their owner set to shirok:
    /usr/local/bin
    ==> The following existing directories will have their group set to admin:
    /usr/local/bin
    ==> The following new directories will be created:
    /usr/local/etc
    /usr/local/include
    /usr/local/lib
    /usr/local/sbin
    /usr/local/share
    /usr/local/var
    /usr/local/opt
    /usr/local/share/zsh
    /usr/local/share/zsh/site-functions
    /usr/local/var/homebrew
    /usr/local/var/homebrew/linked
    /usr/local/Cellar
    /usr/local/Caskroom
    /usr/local/Frameworks
    ==> The Xcode Command Line Tools will be installed.

    Press RETURN to continue or any other key to abort
    ==> /usr/bin/sudo /bin/chmod u+rwx /usr/local/bin
    ==> /usr/bin/sudo /bin/chmod g+rwx /usr/local/bin
    ==> /usr/bin/sudo /usr/sbin/chown shirok /usr/local/bin
    ==> /usr/bin/sudo /usr/bin/chgrp admin /usr/local/bin
    ==> /usr/bin/sudo /bin/mkdir -p /usr/local/etc /usr/local/include /usr/local/lib /usr/local/sbin /usr/local/share /usr/local/var /usr/local/opt /usr/local/share/zsh /usr/local/share/zsh/site-functions /usr/local/var/homebrew /usr/local/var/homebrew/linked /usr/local/Cellar /usr/local/Caskroom /usr/local/Frameworks
    ==> /usr/bin/sudo /bin/chmod g+rwx /usr/local/etc /usr/local/include /usr/local/lib /usr/local/sbin /usr/local/share /usr/local/var /usr/local/opt /usr/local/share/zsh /usr/local/share/zsh/site-functions /usr/local/var/homebrew /usr/local/var/homebrew/linked /usr/local/Cellar /usr/local/Caskroom /usr/local/Frameworks
    ==> /usr/bin/sudo /usr/sbin/chown shirok /usr/local/etc /usr/local/include /usr/local/lib /usr/local/sbin /usr/local/share /usr/local/var /usr/local/opt /usr/local/share/zsh /usr/local/share/zsh/site-functions /usr/local/var/homebrew /usr/local/var/homebrew/linked /usr/local/Cellar /usr/local/Caskroom /usr/local/Frameworks
    ==> /usr/bin/sudo /usr/bin/chgrp admin /usr/local/etc /usr/local/include /usr/local/lib /usr/local/sbin /usr/local/share /usr/local/var /usr/local/opt /usr/local/share/zsh /usr/local/share/zsh/site-functions /usr/local/var/homebrew /usr/local/var/homebrew/linked /usr/local/Cellar /usr/local/Caskroom /usr/local/Frameworks
    ==> /usr/bin/sudo /bin/mkdir -p /usr/local/Homebrew
    ==> /usr/bin/sudo /usr/sbin/chown shirok:admin /usr/local/Homebrew
    ==> /usr/bin/sudo /bin/mkdir -p /Users/shirok/Library/Caches/Homebrew
    ==> /usr/bin/sudo /bin/chmod g+rwx /Users/shirok/Library/Caches/Homebrew
    ==> /usr/bin/sudo /usr/sbin/chown shirok /Users/shirok/Library/Caches/Homebrew
    ==> Searching online for the Command Line Tools
    ==> /usr/bin/sudo /usr/bin/touch /tmp/.com.apple.dt.CommandLineTools.installondemand.in-progress
    ==> Installing Command Line Tools for Xcode-12.3
    ==> /usr/bin/sudo /usr/sbin/softwareupdate -i Command\ Line\ Tools\ for\ Xcode-12.3
    Software Update Tool

    Finding available software

    Downloading Command Line Tools for Xcode

    Downloaded Command Line Tools for Xcode
    Installing Command Line Tools for Xcode
    Done with Command Line Tools for Xcode
    Done.
    ==> /usr/bin/sudo /bin/rm -f /tmp/.com.apple.dt.CommandLineTools.installondemand.in-progress
    Password:
    Sorry, try again.
    Password:
    ==> /usr/bin/sudo /usr/bin/xcode-select --switch /Library/Developer/CommandLineTools
    ==> Downloading and installing Homebrew...
    remote: Enumerating objects: 60, done.
    remote: Counting objects: 100% (60/60), done.
    remote: Compressing objects: 100% (60/60), done.
    remote: Total 167539 (delta 9), reused 47 (delta 0), pack-reused 167479
    Receiving objects: 100% (167539/167539), 43.10 MiB | 917.00 KiB/s, done.
    Resolving deltas: 100% (124253/124253), done.
    From https://github.com/Homebrew/brew
    * [new branch]      dependabot/bundler/Library/Homebrew/rubocop-1.7.0 -> origin/dependabot/bundler/Library/Homebrew/rubocop-1.7.0
    * [new branch]      master     -> origin/master
    * [new tag]             0.1        -> 0.1
    * [new tag]             0.2        -> 0.2
    * [new tag]             0.3        -> 0.3
    * [new tag]             0.4        -> 0.4
    * [new tag]             0.5        -> 0.5
    * [new tag]             0.6        -> 0.6
    * [new tag]             0.7        -> 0.7
    * [new tag]             0.7.1      -> 0.7.1
    * [new tag]             0.8        -> 0.8
    * [new tag]             0.8.1      -> 0.8.1
    * [new tag]             0.9        -> 0.9
    * [new tag]             0.9.1      -> 0.9.1
    * [new tag]             0.9.2      -> 0.9.2
    * [new tag]             0.9.3      -> 0.9.3
    * [new tag]             0.9.4      -> 0.9.4
    * [new tag]             0.9.5      -> 0.9.5
    * [new tag]             0.9.8      -> 0.9.8
    * [new tag]             0.9.9      -> 0.9.9
    * [new tag]             1.0.0      -> 1.0.0
    * [new tag]             1.0.1      -> 1.0.1
    * [new tag]             1.0.2      -> 1.0.2
    * [new tag]             1.0.3      -> 1.0.3
    * [new tag]             1.0.4      -> 1.0.4
    * [new tag]             1.0.5      -> 1.0.5
    * [new tag]             1.0.6      -> 1.0.6
    * [new tag]             1.0.7      -> 1.0.7
    * [new tag]             1.0.8      -> 1.0.8
    * [new tag]             1.0.9      -> 1.0.9
    * [new tag]             1.1.0      -> 1.1.0
    * [new tag]             1.1.1      -> 1.1.1
    * [new tag]             1.1.10     -> 1.1.10
    * [new tag]             1.1.11     -> 1.1.11
    * [new tag]             1.1.12     -> 1.1.12
    * [new tag]             1.1.13     -> 1.1.13
    * [new tag]             1.1.2      -> 1.1.2
    * [new tag]             1.1.3      -> 1.1.3
    * [new tag]             1.1.4      -> 1.1.4
    * [new tag]             1.1.5      -> 1.1.5
    * [new tag]             1.1.6      -> 1.1.6
    * [new tag]             1.1.7      -> 1.1.7
    * [new tag]             1.1.8      -> 1.1.8
    * [new tag]             1.1.9      -> 1.1.9
    * [new tag]             1.2.0      -> 1.2.0
    * [new tag]             1.2.1      -> 1.2.1
    * [new tag]             1.2.2      -> 1.2.2
    * [new tag]             1.2.3      -> 1.2.3
    * [new tag]             1.2.4      -> 1.2.4
    * [new tag]             1.2.5      -> 1.2.5
    * [new tag]             1.2.6      -> 1.2.6
    * [new tag]             1.3.0      -> 1.3.0
    * [new tag]             1.3.1      -> 1.3.1
    * [new tag]             1.3.2      -> 1.3.2
    * [new tag]             1.3.3      -> 1.3.3
    * [new tag]             1.3.4      -> 1.3.4
    * [new tag]             1.3.5      -> 1.3.5
    * [new tag]             1.3.6      -> 1.3.6
    * [new tag]             1.3.7      -> 1.3.7
    * [new tag]             1.3.8      -> 1.3.8
    * [new tag]             1.3.9      -> 1.3.9
    * [new tag]             1.4.0      -> 1.4.0
    * [new tag]             1.4.1      -> 1.4.1
    * [new tag]             1.4.2      -> 1.4.2
    * [new tag]             1.4.3      -> 1.4.3
    * [new tag]             1.5.0      -> 1.5.0
    * [new tag]             1.5.1      -> 1.5.1
    * [new tag]             1.5.10     -> 1.5.10
    * [new tag]             1.5.11     -> 1.5.11
    * [new tag]             1.5.12     -> 1.5.12
    * [new tag]             1.5.13     -> 1.5.13
    * [new tag]             1.5.14     -> 1.5.14
    * [new tag]             1.5.2      -> 1.5.2
    * [new tag]             1.5.3      -> 1.5.3
    * [new tag]             1.5.4      -> 1.5.4
    * [new tag]             1.5.5      -> 1.5.5
    * [new tag]             1.5.6      -> 1.5.6
    * [new tag]             1.5.7      -> 1.5.7
    * [new tag]             1.5.8      -> 1.5.8
    * [new tag]             1.5.9      -> 1.5.9
    * [new tag]             1.6.0      -> 1.6.0
    * [new tag]             1.6.1      -> 1.6.1
    * [new tag]             1.6.10     -> 1.6.10
    * [new tag]             1.6.11     -> 1.6.11
    * [new tag]             1.6.12     -> 1.6.12
    * [new tag]             1.6.13     -> 1.6.13
    * [new tag]             1.6.14     -> 1.6.14
    * [new tag]             1.6.15     -> 1.6.15
    * [new tag]             1.6.16     -> 1.6.16
    * [new tag]             1.6.17     -> 1.6.17
    * [new tag]             1.6.2      -> 1.6.2
    * [new tag]             1.6.3      -> 1.6.3
    * [new tag]             1.6.4      -> 1.6.4
    * [new tag]             1.6.5      -> 1.6.5
    * [new tag]             1.6.6      -> 1.6.6
    * [new tag]             1.6.7      -> 1.6.7
    * [new tag]             1.6.8      -> 1.6.8
    * [new tag]             1.6.9      -> 1.6.9
    * [new tag]             1.7.0      -> 1.7.0
    * [new tag]             1.7.1      -> 1.7.1
    * [new tag]             1.7.2      -> 1.7.2
    * [new tag]             1.7.3      -> 1.7.3
    * [new tag]             1.7.4      -> 1.7.4
    * [new tag]             1.7.5      -> 1.7.5
    * [new tag]             1.7.6      -> 1.7.6
    * [new tag]             1.7.7      -> 1.7.7
    * [new tag]             1.8.0      -> 1.8.0
    * [new tag]             1.8.1      -> 1.8.1
    * [new tag]             1.8.2      -> 1.8.2
    * [new tag]             1.8.3      -> 1.8.3
    * [new tag]             1.8.4      -> 1.8.4
    * [new tag]             1.8.5      -> 1.8.5
    * [new tag]             1.8.6      -> 1.8.6
    * [new tag]             1.9.0      -> 1.9.0
    * [new tag]             1.9.1      -> 1.9.1
    * [new tag]             1.9.2      -> 1.9.2
    * [new tag]             1.9.3      -> 1.9.3
    * [new tag]             2.0.0      -> 2.0.0
    * [new tag]             2.0.1      -> 2.0.1
    * [new tag]             2.0.2      -> 2.0.2
    * [new tag]             2.0.3      -> 2.0.3
    * [new tag]             2.0.4      -> 2.0.4
    * [new tag]             2.0.5      -> 2.0.5
    * [new tag]             2.0.6      -> 2.0.6
    * [new tag]             2.1.0      -> 2.1.0
    * [new tag]             2.1.1      -> 2.1.1
    * [new tag]             2.1.10     -> 2.1.10
    * [new tag]             2.1.11     -> 2.1.11
    * [new tag]             2.1.12     -> 2.1.12
    * [new tag]             2.1.13     -> 2.1.13
    * [new tag]             2.1.14     -> 2.1.14
    * [new tag]             2.1.15     -> 2.1.15
    * [new tag]             2.1.16     -> 2.1.16
    * [new tag]             2.1.2      -> 2.1.2
    * [new tag]             2.1.3      -> 2.1.3
    * [new tag]             2.1.4      -> 2.1.4
    * [new tag]             2.1.5      -> 2.1.5
    * [new tag]             2.1.6      -> 2.1.6
    * [new tag]             2.1.7      -> 2.1.7
    * [new tag]             2.1.8      -> 2.1.8
    * [new tag]             2.1.9      -> 2.1.9
    * [new tag]             2.2.0      -> 2.2.0
    * [new tag]             2.2.1      -> 2.2.1
    * [new tag]             2.2.10     -> 2.2.10
    * [new tag]             2.2.11     -> 2.2.11
    * [new tag]             2.2.12     -> 2.2.12
    * [new tag]             2.2.13     -> 2.2.13
    * [new tag]             2.2.14     -> 2.2.14
    * [new tag]             2.2.15     -> 2.2.15
    * [new tag]             2.2.16     -> 2.2.16
    * [new tag]             2.2.17     -> 2.2.17
    * [new tag]             2.2.2      -> 2.2.2
    * [new tag]             2.2.3      -> 2.2.3
    * [new tag]             2.2.4      -> 2.2.4
    * [new tag]             2.2.5      -> 2.2.5
    * [new tag]             2.2.6      -> 2.2.6
    * [new tag]             2.2.7      -> 2.2.7
    * [new tag]             2.2.8      -> 2.2.8
    * [new tag]             2.2.9      -> 2.2.9
    * [new tag]             2.3.0      -> 2.3.0
    * [new tag]             2.4.0      -> 2.4.0
    * [new tag]             2.4.1      -> 2.4.1
    * [new tag]             2.4.10     -> 2.4.10
    * [new tag]             2.4.11     -> 2.4.11
    * [new tag]             2.4.12     -> 2.4.12
    * [new tag]             2.4.13     -> 2.4.13
    * [new tag]             2.4.14     -> 2.4.14
    * [new tag]             2.4.15     -> 2.4.15
    * [new tag]             2.4.16     -> 2.4.16
    * [new tag]             2.4.2      -> 2.4.2
    * [new tag]             2.4.3      -> 2.4.3
    * [new tag]             2.4.4      -> 2.4.4
    * [new tag]             2.4.5      -> 2.4.5
    * [new tag]             2.4.6      -> 2.4.6
    * [new tag]             2.4.7      -> 2.4.7
    * [new tag]             2.4.8      -> 2.4.8
    * [new tag]             2.4.9      -> 2.4.9
    * [new tag]             2.5.0      -> 2.5.0
    * [new tag]             2.5.1      -> 2.5.1
    * [new tag]             2.5.10     -> 2.5.10
    * [new tag]             2.5.11     -> 2.5.11
    * [new tag]             2.5.12     -> 2.5.12
    * [new tag]             2.5.2      -> 2.5.2
    * [new tag]             2.5.3      -> 2.5.3
    * [new tag]             2.5.4      -> 2.5.4
    * [new tag]             2.5.5      -> 2.5.5
    * [new tag]             2.5.6      -> 2.5.6
    * [new tag]             2.5.7      -> 2.5.7
    * [new tag]             2.5.8      -> 2.5.8
    * [new tag]             2.5.9      -> 2.5.9
    * [new tag]             2.6.0      -> 2.6.0
    * [new tag]             2.6.1      -> 2.6.1
    * [new tag]             2.6.2      -> 2.6.2
    * [new tag]             2.7.0      -> 2.7.0
    * [new tag]             2.7.1      -> 2.7.1
    HEAD is now at bc4f5556c Merge pull request #10144 from Rylan12/deprecate-disable-documentation
    ==> Homebrew is run entirely by unpaid volunteers. Please consider donating:
    https://github.com/Homebrew/brew#donations
    ==> Tapping homebrew/core
    Cloning into '/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core'...
    remote: Enumerating objects: 151, done.
    remote: Counting objects: 100% (151/151), done.
    remote: Compressing objects: 100% (106/106), done.
    remote: Total 878388 (delta 81), reused 88 (delta 45), pack-reused 878237
    Receiving objects: 100% (878388/878388), 348.82 MiB | 876.00 KiB/s, done.
    Resolving deltas: 100% (594515/594515), done.
    Updating files: 100% (5699/5699), done.
    Tapped 2 commands and 5416 formulae (5,724 files, 382.8MB).
    Already up-to-date.
    ==> Installation successful!

    ==> Homebrew has enabled anonymous aggregate formulae and cask analytics.
    Read the analytics documentation (and how to opt-out) here:
    https://docs.brew.sh/Analytics
    No analytics data has been sent yet (or will be during this `install` run).

    ==> Homebrew is run entirely by unpaid volunteers. Please consider donating:
    https://github.com/Homebrew/brew#donations

    ==> Next steps:
    - Run `brew help` to get started
    - Further documentation:
        https://docs.brew.sh

2) インストール確認

Install Homebrew

[shirok@macbook: ~]$ brew -v
    Homebrew 2.7.1
    Homebrew/homebrew-core (git revision 47113; last commit 2020-12-29)

● wgetインストール

wgetコマンドをインストール

1) wgetインストール

[shirok@macbook: ~]$ brew install wget
    Updating Homebrew...
    ==> Auto-updated Homebrew!
    Updated 1 tap (homebrew/core).
    ==> Updated Formulae
    Updated 4 formulae.

    ==> Downloading https://homebrew.bintray.com/bottles/gettext-0.21.big_sur.bottle.tar.gz
    ==> Downloading from https://d29vzk4ow07wi7.cloudfront.net/a025e143fe3f5f7e24a936b8b0a4926acfdd025b11d62024e3d355c106536d56
    ######################################################################## 100.0%
    ==> Downloading https://homebrew.bintray.com/bottles/libunistring-0.9.10.big_sur.bottle.tar.gz
    ==> Downloading from https://d29vzk4ow07wi7.cloudfront.net/5d336bd939f678b48dc1ced97ed0def383999638d80caa8cb2da780594556524
    ######################################################################## 100.0%
    ==> Downloading https://homebrew.bintray.com/bottles/libidn2-2.3.0.big_sur.bottle.tar.gz
    ==> Downloading from https://d29vzk4ow07wi7.cloudfront.net/65523d89d65893a402f9f2641793314d5c18f5ba115400ef6ad372b8c177ebd9
    ######################################################################## 100.0%
    ==> Downloading https://homebrew.bintray.com/bottles/openssl%401.1-1.1.1i.big_sur.bottle.tar.gz
    ==> Downloading from https://d29vzk4ow07wi7.cloudfront.net/8008537d37a7f09eedbcd03c575e15206c54f97fe162c6d36da904897e9cee31
    ######################################################################## 100.0%
    ==> Downloading https://homebrew.bintray.com/bottles/wget-1.20.3_2.big_sur.bottle.tar.gz
    ==> Downloading from https://d29vzk4ow07wi7.cloudfront.net/c965fd423db73afdcce5ccde8af2783b5659ec2287bf02ae6a982fd6dcbd6292
    ######################################################################## 100.0%
    ==> Installing dependencies for wget: gettext, libunistring, libidn2 and openssl@1.1
    ==> Installing wget dependency: gettext
    ==> Pouring gettext-0.21.big_sur.bottle.tar.gz
    ?  /usr/local/Cellar/gettext/0.21: 1,953 files, 19.8MB
    ==> Installing wget dependency: libunistring
    ==> Pouring libunistring-0.9.10.big_sur.bottle.tar.gz
    ?  /usr/local/Cellar/libunistring/0.9.10: 55 files, 4.5MB
    ==> Installing wget dependency: libidn2
    ==> Pouring libidn2-2.3.0.big_sur.bottle.tar.gz
    ?  /usr/local/Cellar/libidn2/2.3.0: 72 files, 808.2KB
    ==> Installing wget dependency: openssl@1.1
    ==> Pouring openssl@1.1-1.1.1i.big_sur.bottle.tar.gz
    ==> Caveats
    A CA file has been bootstrapped using certificates from the system
    keychain. To add additional certificates, place .pem files in
    /usr/local/etc/openssl@1.1/certs

    and run
    /usr/local/opt/openssl@1.1/bin/c_rehash

    openssl@1.1 is keg-only, which means it was not symlinked into /usr/local,
    because macOS provides LibreSSL.

    If you need to have openssl@1.1 first in your PATH run:
    echo 'export PATH="/usr/local/opt/openssl@1.1/bin:$PATH"' >> /Users/shirok/.bash_profile

    For compilers to find openssl@1.1 you may need to set:
    export LDFLAGS="-L/usr/local/opt/openssl@1.1/lib"
    export CPPFLAGS="-I/usr/local/opt/openssl@1.1/include"

    ==> Summary
    ?  /usr/local/Cellar/openssl@1.1/1.1.1i: 8,067 files, 18.5MB
    ==> Installing wget
    ==> Pouring wget-1.20.3_2.big_sur.bottle.tar.gz
    ?  /usr/local/Cellar/wget/1.20.3_2: 50 files, 4.0MB
    ==> Caveats
    ==> openssl@1.1
    A CA file has been bootstrapped using certificates from the system
    keychain. To add additional certificates, place .pem files in
    /usr/local/etc/openssl@1.1/certs

    and run
    /usr/local/opt/openssl@1.1/bin/c_rehash

    openssl@1.1 is keg-only, which means it was not symlinked into /usr/local,
    because macOS provides LibreSSL.

    If you need to have openssl@1.1 first in your PATH run:
    echo 'export PATH="/usr/local/opt/openssl@1.1/bin:$PATH"' >> /Users/shirok/.bash_profile

    For compilers to find openssl@1.1 you may need to set:
    export LDFLAGS="-L/usr/local/opt/openssl@1.1/lib"
    export CPPFLAGS="-I/usr/local/opt/openssl@1.1/include"

2) インストール確認

[shirok@macbook: ~]$ which wget
    /usr/local/bin/wget

● WebLogicコンテナ入手

1) WebLogicコンテナ入手

[shirok@macbook: ~]$ cd ~/
[shirok@macbook: ~]$ wget https://objectstorage.us-ashburn-1.oraclecloud.com/p/ufHAcuj6M4xpPsqYVmHBsSA7vFUiAsx7GF_gZMB9hyo/n/ocisateam/b/images/o/weblogic-to-oci.zip
    --2020-12-29 20:49:43--  https://objectstorage.us-ashburn-1.oraclecloud.com/p/ufHAcuj6M4xpPsqYVmHBsSA7vFUiAsx7GF_gZMB9hyo/n/ocisateam/b/images/o/weblogic-to-oci.zip
    objectstorage.us-ashburn-1.oraclecloud.com (objectstorage.us-ashburn-1.oraclecloud.com) をDNSに問いあわせています... 134.70.32.1, 134.70.28.1, 134.70.24.1
    objectstorage.us-ashburn-1.oraclecloud.com (objectstorage.us-ashburn-1.oraclecloud.com)|134.70.32.1|:443 に接続しています... 接続しました。
    HTTP による接続要求を送信しました、応答を待っています... 200 OK
    長さ: 361118 (353K) [application/zip]
    `weblogic-to-oci.zip' に保存中

    weblogic-to-oci.zip            100%[===================================================>] 352.65K   976KB/s 時間 0.4s

    2020-12-29 20:49:46 (976 KB/s) - `weblogic-to-oci.zip' へ保存完了 [361118/361118]

2) wget確認

[shirok@macbook: ~]$ ls -l weblogic-to-oci.zip
    -rw-r--r--  1 shirok  staff  361118 10 24 05:30 weblogic-to-oci.zip

3) weblogic-to-oci.zip解答
次のコマンドでファイルを解凍

[shirok@macbook: ~]$ unzip weblogic-to-oci.zip
    Archive:  weblogic-to-oci.zip
    creating: weblogic-to-oci/
    creating: weblogic-to-oci/weblogic/
    creating: weblogic-to-oci/weblogic/wdt/
    inflating: weblogic-to-oci/weblogic/wdt/update_domain.sh
    inflating: weblogic-to-oci/weblogic/wdt/discover_domain.sh
    inflating: weblogic-to-oci/weblogic/wdt/install_wdt.sh
    extracting: weblogic-to-oci/weblogic/wdt/cleanup.sh
    inflating: weblogic-to-oci/weblogic/wdt/update_domain_as_oracle_user.sh
    inflating: weblogic-to-oci/weblogic/Dockerfile
    inflating: weblogic-to-oci/weblogic/env
    creating: weblogic-to-oci/weblogic/scripts/
    inflating: weblogic-to-oci/weblogic/scripts/init.sh
    inflating: weblogic-to-oci/weblogic/scripts/deploy_datasource.py
    inflating: weblogic-to-oci/weblogic/scripts/create_domain.sh
    inflating: weblogic-to-oci/weblogic/scripts/oradatasource.tpl
    inflating: weblogic-to-oci/weblogic/scripts/SimpleHTML.ear
    inflating: weblogic-to-oci/weblogic/scripts/startNMWebLogic.sh
    inflating: weblogic-to-oci/weblogic/scripts/check.sh
    inflating: weblogic-to-oci/weblogic/scripts/SimpleDB.ear
    inflating: weblogic-to-oci/weblogic/scripts/deploy.sh
    inflating: weblogic-to-oci/weblogic/scripts/gen_env.sh
    inflating: weblogic-to-oci/weblogic/scripts/deploy_app.py
    inflating: weblogic-to-oci/weblogic/scripts/create_domain.py
    creating: weblogic-to-oci/oracledbinit/
    inflating: weblogic-to-oci/oracledbinit/Dockerfile
    creating: weblogic-to-oci/oracledbinit/scripts/
    inflating: weblogic-to-oci/oracledbinit/scripts/setup.sh
    creating: weblogic-to-oci/oracledbinit/scripts/sql/
    inflating: weblogic-to-oci/oracledbinit/scripts/sql/createSchema.sql
    inflating: weblogic-to-oci/oracledbinit/scripts/sql/changePassword.sql
    inflating: weblogic-to-oci/docker-compose.yml
    inflating: weblogic-to-oci/install-docker-linux.sh
    creating: weblogic-to-oci/oracledb/
    inflating: weblogic-to-oci/oracledb/Dockerfile
    creating: weblogic-to-oci/oracledb/datapump/
    inflating: weblogic-to-oci/oracledb/datapump/datapump_import.sh
    inflating: weblogic-to-oci/oracledb/datapump/datapump_export.sh
    extracting: weblogic-to-oci/oracledb/datapump/cleanup.sh
    inflating: weblogic-to-oci/oracledb/datapump/datapump_import_atp.sh

4) zip解凍確認

[shirok@macbook: ~]$ ls -ld weblogic-to-oci*
    drwx------  7 shirok  staff     224 10 22 06:59 weblogic-to-oci
    -rw-r--r--  1 shirok  staff  361118 10 24 05:30 weblogic-to-oci.zip

■ プライベートDockerイメージの条件に同意

Docker Hubにサインインして、ライセンス利用に同意する作業を実施

● Docker Hubにサインイン

https://docs.docker.com/get-docker/
01.png

● Docker Hub: Oracle WebLogic Server

1) Weblogic イメージ: https://hub.docker.com/_/oracle-weblogic-server-12c に移動し、[Proceed to Checkout]をクリック

01.png

2)ログイン・アカウント情報を記入し,ライセンス条項の内容を確認し、同意できれば[Get Content]をクリック
02.png

3) ライセンス取得完了
03.png

● Docker Hub: Oracle Database

1) Oracle Databaseページ: https://hub.docker.com/_/oracle-database-enterprise-edition に移動し、[Proceed to Checkout]をクリック

01.png

2)ログイン・アカウント情報を記入し,ライセンス条項の内容を確認し、同意できれば[Get Content]をクリック
02.png

3)ライセンス取得完了
03.png

● dockerにログイン

[shirok@macbook: ~]$ docker login
    Authenticating with existing credentials...
    Login Succeeded

●コンテナダウンロード

1) wgetでweblogic-to-ociコンテナをダウンロード

[shirok@macbook: ~]$ wget https://objectstorage.us-ashburn-1.oraclecloud.com/p/ufHAcuj6M4xpPsqYVmHBsSA7vFUiAsx7GF_gZMB9hyo/n/ocisateam/b/images/o/weblogic-to-oci.zip
    --2020-12-15 19:40:28--  https://objectstorage.us-ashburn-1.oraclecloud.com/p/ufHAcuj6M4xpPsqYVmHBsSA7vFUiAsx7GF_gZMB9hyo/n/ocisateam/b/images/o/weblogic-to-oci.zip
    objectstorage.us-ashburn-1.oraclecloud.com (objectstorage.us-ashburn-1.oraclecloud.com) をDNSに問いあわせています... 134.70.28.1, 134.70.24.1, 134.70.32.1
    objectstorage.us-ashburn-1.oraclecloud.com (objectstorage.us-ashburn-1.oraclecloud.com)|134.70.28.1|:443 に接続しています... 接続しました。
    HTTP による接続要求を送信しました、応答を待っています... 200 OK
    長さ: 361118 (353K) [application/zip]
    `weblogic-to-oci.zip' に保存中

    weblogic-to-oci.zip                  100%[===================================================================>] 352.65K  88.7KB/s 時間 4.0s

    2020-12-15 19:40:33 (88.7 KB/s) - `weblogic-to-oci.zip' へ保存完了 [361118/361118]

2) ダウンロードzip解凍
[shirok@macbook: ~]$ unzip weblogic-to-oci.zip

3)2) ダウンロードzip解凍確認
[shirok@macbook: ~]$ ls -ld weblogic-to-oci*
drwx------ 7 shirok staff 224 10 22 06:59 weblogic-to-oci
-rw-r--r-- 1 shirok staff 361118 10 24 05:30 weblogic-to-oci.zip

■ Docker環境を開始
Docker環境をを起動

shell: コピー
cd weblogic-to-oci
docker-compose build --no-cache
docker-compose up -d

[shirok@macbook: ~]$ cd weblogic-to-oci
[shirok@macbook:weblogic-to-oci]$ docker-compose build --no-cache
    Building oracledb
    Step 1/10 : FROM store/oracle/database-enterprise:12.2.0.1
    12.2.0.1: Pulling from store/oracle/database-enterprise
    4ce27fe12c04: Pull complete
    9d3556e8e792: Pull complete
    fc60a1a28025: Pull complete
    0c32e4ed872e: Pull complete
    b465d9b6e399: Pull complete
    Digest: sha256:40760ac70dba2c4c70d0c542e42e082e8b04d9040d91688d63f728af764a2f5d
    Status: Downloaded newer image for store/oracle/database-enterprise:12.2.0.1
    ---> 12a359cd0528
    Step 2/10 : LABEL maintainer='Emmanuel Leroy <emmanuel.leroy@oracle.com>'
    ---> Running in abd410681bb7
    Removing intermediate container abd410681bb7
    ---> aad9a706d8e1
    Step 3/10 : USER root
    ---> Running in 18a065f4a33d
    Removing intermediate container 18a065f4a33d
    ---> bfead5660387
    Step 4/10 : RUN yum install -y openssl nano zip sudo
    ---> Running in bca4fcac9a9d
    Loaded plugins: ovl, ulninfo
    Resolving Dependencies
    --> Running transaction check
    ---> Package nano.x86_64 0:2.3.1-10.el7 will be installed
    ---> Package openssl.x86_64 1:1.0.2k-21.el7_9 will be installed
    --> Processing Dependency: openssl-libs(x86-64) = 1:1.0.2k-21.el7_9 for package: 1:openssl-1.0.2k-21.el7_9.x86_64
    ---> Package sudo.x86_64 0:1.8.23-10.el7 will be installed
    ---> Package zip.x86_64 0:3.0-11.el7 will be installed
    --> Running transaction check
    ---> Package openssl-libs.x86_64 1:1.0.2k-8.0.1.el7 will be updated
    ---> Package openssl-libs.x86_64 1:1.0.2k-21.el7_9 will be an update
    --> Finished Dependency Resolution

    Dependencies Resolved

    ================================================================================
    Package            Arch         Version                 Repository        Size
    ================================================================================
    Installing:
    nano               x86_64       2.3.1-10.el7            ol7_latest       438 k
    openssl            x86_64       1:1.0.2k-21.el7_9       ol7_latest       493 k
    sudo               x86_64       1.8.23-10.el7           ol7_latest       842 k
    zip                x86_64       3.0-11.el7              ol7_latest       259 k
    Updating for dependencies:
    openssl-libs       x86_64       1:1.0.2k-21.el7_9       ol7_latest       1.2 M

    Transaction Summary
    ================================================================================
    Install  4 Packages
    Upgrade             ( 1 Dependent package)

    Total download size: 3.2 M
    Downloading packages:
    Delta RPMs disabled because /usr/bin/applydeltarpm not installed.
    --------------------------------------------------------------------------------
    Total                                              1.1 MB/s | 3.2 MB  00:02
    Running transaction check
    Running transaction test
    Transaction test succeeded
    Running transaction
    Updating   : 1:openssl-libs-1.0.2k-21.el7_9.x86_64                        1/6
    Installing : 1:openssl-1.0.2k-21.el7_9.x86_64                             2/6
    Installing : nano-2.3.1-10.el7.x86_64                                     3/6
    Installing : sudo-1.8.23-10.el7.x86_64                                    4/6
    Installing : zip-3.0-11.el7.x86_64                                        5/6
    Cleanup    : 1:openssl-libs-1.0.2k-8.0.1.el7.x86_64                       6/6
    Verifying  : zip-3.0-11.el7.x86_64                                        1/6
    Verifying  : sudo-1.8.23-10.el7.x86_64                                    2/6
    Verifying  : 1:openssl-1.0.2k-21.el7_9.x86_64                             3/6
    Verifying  : nano-2.3.1-10.el7.x86_64                                     4/6
    Verifying  : 1:openssl-libs-1.0.2k-21.el7_9.x86_64                        5/6
    Verifying  : 1:openssl-libs-1.0.2k-8.0.1.el7.x86_64                       6/6

    Installed:
    nano.x86_64 0:2.3.1-10.el7           openssl.x86_64 1:1.0.2k-21.el7_9
    sudo.x86_64 0:1.8.23-10.el7          zip.x86_64 0:3.0-11.el7

    Dependency Updated:
    openssl-libs.x86_64 1:1.0.2k-21.el7_9

    Complete!
    Removing intermediate container bca4fcac9a9d
    ---> 99abcc610170
    Step 5/10 : RUN usermod -aG wheel oracle && echo '%wheel ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
    ---> Running in fd74cb64134e
    Removing intermediate container fd74cb64134e
    ---> 10481ec4e40d
    Step 6/10 : COPY --chown=oracle:oinstall ./datapump /home/oracle/datapump
    ---> 06fdee1969a7
    Step 7/10 : USER oracle
    ---> Running in 59c0d5d5dcb5
    Removing intermediate container 59c0d5d5dcb5
    ---> f93943298961
    Step 8/10 : ENV JAVA_HOME=$ORACLE_HOME/jdk
    ---> Running in 2a9fd70f4a40
    Removing intermediate container 2a9fd70f4a40
    ---> 33d6a84387bb
    Step 9/10 : ENV PATH=$PATH:$JAVA_HOME/bin:$ORACLE_HOME/bin:$ORACLE_HOME/lib
    ---> Running in b19c1d8869f4
    Removing intermediate container b19c1d8869f4
    ---> 67b157677730
    Step 10/10 : ENV ORACLE_SID=$DB_SID
    ---> Running in 71a205bb0e7d
    Removing intermediate container 71a205bb0e7d
    ---> 020c372c61bd

    Successfully built 020c372c61bd
    Successfully tagged weblogic-to-oci_oracledb:latest
    Building oracledbinit
    Step 1/5 : FROM store/oracle/database-instantclient:12.2.0.1
    12.2.0.1: Pulling from store/oracle/database-instantclient
    497341ef9d71: Pull complete
    598d27c2564a: Pull complete
    Digest: sha256:e83a2a223a14f24e6e433847d15d817ff7799a3a1a2dd2e4b224437358e996a0
    Status: Downloaded newer image for store/oracle/database-instantclient:12.2.0.1
    ---> 916033cf06bf
    Step 2/5 : LABEL maintainer='Emmanuel Leroy <emmanuel.leroy@oracle.com>'
    ---> Running in d925eccaf01e
    Removing intermediate container d925eccaf01e
    ---> dbee9c250ed2
    Step 3/5 : COPY ./scripts /home/oracle/
    ---> 8922b1b3c1ae
    Step 4/5 : WORKDIR /home/oracle/
    ---> Running in 330e1d569639
    Removing intermediate container 330e1d569639
    ---> 979da10af6b0
    Step 5/5 : CMD ./setup.sh
    ---> Running in 1d49490209aa
    Removing intermediate container 1d49490209aa
    ---> 0824c2ab6542

    Successfully built 0824c2ab6542
    Successfully tagged weblogic-to-oci_oracledbinit:latest
    Building wls_admin
    Step 1/16 : FROM store/oracle/weblogic:12.2.1.3
    12.2.1.3: Pulling from store/oracle/weblogic
    822ace0353cb: Pull complete
    5530c635d7c1: Pull complete
    7a6cdb2f1336: Pull complete
    474428c2ed86: Pull complete
    873179d0aeb5: Pull complete
    202b91aacf60: Pull complete
    Digest: sha256:804ef604acf24c8659a4caa9756b9483ab43e8931e3c3c1d6d2c89484f445bb6
    Status: Downloaded newer image for store/oracle/weblogic:12.2.1.3
    ---> 0f8900c08e76
    Step 2/16 : ARG DOMAIN_NAME=base_domain
    ---> Running in 6a992d66e16f
    Removing intermediate container 6a992d66e16f
    ---> 9d98c90d07ac
    Step 3/16 : LABEL maintainer='Emmanuel Leroy <emmanuel.leroy@oracle.com>'
    ---> Running in 100890f5fe50
    Removing intermediate container 100890f5fe50
    ---> fd0c5ce67e8b
    Step 4/16 : ENV MW_HOME="$ORACLE_HOME"     DOMAIN_HOME=/u01/oracle/user_projects/domains/${DOMAIN_NAME}     PATH=$PATH:/u01/oracle:$DOMAIN_HOME
    ---> Running in 85e893cad4a7
    Removing intermediate container 85e893cad4a7
    ---> 38be81695143
    Step 5/16 : COPY ./env /u01/app/oracle/env
    ---> 68ca6ea8f93b
    Step 6/16 : USER root
    ---> Running in aa84162b0917
    Removing intermediate container aa84162b0917
    ---> 79cb5cee6c94
    Step 7/16 : RUN yum install -y zip nano openssh-clients
    ---> Running in b80fb3f3fd73
    Loaded plugins: ovl
    Resolving Dependencies
    --> Running transaction check
    ---> Package nano.x86_64 0:2.3.1-10.el7 will be installed
    ---> Package openssh-clients.x86_64 0:7.4p1-21.0.1.el7 will be installed
    --> Processing Dependency: openssh = 7.4p1-21.0.1.el7 for package: openssh-clients-7.4p1-21.0.1.el7.x86_64
    --> Processing Dependency: fipscheck-lib(x86-64) >= 1.3.0 for package: openssh-clients-7.4p1-21.0.1.el7.x86_64
    --> Processing Dependency: libfipscheck.so.1()(64bit) for package: openssh-clients-7.4p1-21.0.1.el7.x86_64
    --> Processing Dependency: libedit.so.0()(64bit) for package: openssh-clients-7.4p1-21.0.1.el7.x86_64
    ---> Package zip.x86_64 0:3.0-11.el7 will be installed
    --> Running transaction check
    ---> Package fipscheck-lib.x86_64 0:1.4.1-6.el7 will be installed
    --> Processing Dependency: /usr/bin/fipscheck for package: fipscheck-lib-1.4.1-6.el7.x86_64
    ---> Package libedit.x86_64 0:3.0-12.20121213cvs.el7 will be installed
    ---> Package openssh.x86_64 0:7.4p1-21.0.1.el7 will be installed
    --> Processing Dependency: /sbin/nologin for package: openssh-7.4p1-21.0.1.el7.x86_64
    --> Running transaction check
    ---> Package fipscheck.x86_64 0:1.4.1-6.el7 will be installed
    ---> Package util-linux.x86_64 0:2.23.2-65.0.1.el7 will be installed
    --> Processing Dependency: libmount = 2.23.2-65.0.1.el7 for package: util-linux-2.23.2-65.0.1.el7.x86_64
    --> Processing Dependency: libsmartcols = 2.23.2-65.0.1.el7 for package: util-linux-2.23.2-65.0.1.el7.x86_64
    --> Processing Dependency: libuuid = 2.23.2-65.0.1.el7 for package: util-linux-2.23.2-65.0.1.el7.x86_64
    --> Processing Dependency: libblkid = 2.23.2-65.0.1.el7 for package: util-linux-2.23.2-65.0.1.el7.x86_64
    --> Processing Dependency: pam >= 1.1.3-7 for package: util-linux-2.23.2-65.0.1.el7.x86_64
    --> Processing Dependency: libudev.so.1(LIBUDEV_183)(64bit) for package: util-linux-2.23.2-65.0.1.el7.x86_64
    --> Processing Dependency: libsystemd.so.0(LIBSYSTEMD_209)(64bit) for package: util-linux-2.23.2-65.0.1.el7.x86_64
    --> Processing Dependency: libpam.so.0(LIBPAM_1.0)(64bit) for package: util-linux-2.23.2-65.0.1.el7.x86_64
    --> Processing Dependency: /etc/pam.d/system-auth for package: util-linux-2.23.2-65.0.1.el7.x86_64
    --> Processing Dependency: libpam_misc.so.0(LIBPAM_MISC_1.0)(64bit) for package: util-linux-2.23.2-65.0.1.el7.x86_64
    --> Processing Dependency: libsmartcols.so.1(SMARTCOLS_2.25)(64bit) for package: util-linux-2.23.2-65.0.1.el7.x86_64
    --> Processing Dependency: libutempter.so.0(UTEMPTER_1.1)(64bit) for package: util-linux-2.23.2-65.0.1.el7.x86_64
    --> Processing Dependency: libsystemd.so.0()(64bit) for package: util-linux-2.23.2-65.0.1.el7.x86_64
    --> Processing Dependency: libsmartcols.so.1()(64bit) for package: util-linux-2.23.2-65.0.1.el7.x86_64
    --> Processing Dependency: libpam.so.0()(64bit) for package: util-linux-2.23.2-65.0.1.el7.x86_64
    --> Processing Dependency: libuser.so.1()(64bit) for package: util-linux-2.23.2-65.0.1.el7.x86_64
    --> Processing Dependency: libutempter.so.0()(64bit) for package: util-linux-2.23.2-65.0.1.el7.x86_64
    --> Processing Dependency: libudev.so.1()(64bit) for package: util-linux-2.23.2-65.0.1.el7.x86_64
    --> Processing Dependency: libpam_misc.so.0()(64bit) for package: util-linux-2.23.2-65.0.1.el7.x86_64
    --> Running transaction check
    ---> Package libblkid.x86_64 0:2.23.2-61.el7_7.1 will be updated
    ---> Package libblkid.x86_64 0:2.23.2-65.0.1.el7 will be an update
    ---> Package libmount.x86_64 0:2.23.2-61.el7_7.1 will be updated
    ---> Package libmount.x86_64 0:2.23.2-65.0.1.el7 will be an update
    ---> Package libsmartcols.x86_64 0:2.23.2-65.0.1.el7 will be installed
    ---> Package libuser.x86_64 0:0.60-9.el7 will be installed
    ---> Package libutempter.x86_64 0:1.1.6-4.el7 will be installed
    ---> Package libuuid.x86_64 0:2.23.2-61.el7_7.1 will be updated
    ---> Package libuuid.x86_64 0:2.23.2-65.0.1.el7 will be an update
    ---> Package pam.x86_64 0:1.1.8-23.el7 will be installed
    --> Processing Dependency: cracklib-dicts >= 2.8 for package: pam-1.1.8-23.el7.x86_64
    --> Processing Dependency: libpwquality >= 0.9.9 for package: pam-1.1.8-23.el7.x86_64
    --> Processing Dependency: libcrack.so.2()(64bit) for package: pam-1.1.8-23.el7.x86_64
    ---> Package systemd-libs.x86_64 0:219-78.0.1.el7_9.2 will be installed
    --> Processing Dependency: libdw.so.1()(64bit) for package: systemd-libs-219-78.0.1.el7_9.2.x86_64
    --> Processing Dependency: liblz4.so.1()(64bit) for package: systemd-libs-219-78.0.1.el7_9.2.x86_64
    --> Running transaction check
    ---> Package cracklib.x86_64 0:2.9.0-11.el7 will be installed
    ---> Package cracklib-dicts.x86_64 0:2.9.0-11.el7 will be installed
    ---> Package elfutils-libs.x86_64 0:0.176-5.el7 will be installed
    --> Processing Dependency: elfutils-libelf(x86-64) = 0.176-5.el7 for package: elfutils-libs-0.176-5.el7.x86_64
    --> Processing Dependency: default-yama-scope for package: elfutils-libs-0.176-5.el7.x86_64
    ---> Package libpwquality.x86_64 0:1.2.3-5.el7 will be installed
    ---> Package lz4.x86_64 0:1.8.3-1.el7 will be installed
    --> Running transaction check
    ---> Package elfutils-default-yama-scope.noarch 0:0.176-5.el7 will be installed
    --> Processing Dependency: systemd for package: elfutils-default-yama-scope-0.176-5.el7.noarch
    ---> Package elfutils-libelf.x86_64 0:0.176-2.el7 will be updated
    ---> Package elfutils-libelf.x86_64 0:0.176-5.el7 will be an update
    --> Running transaction check
    ---> Package systemd.x86_64 0:219-78.0.1.el7_9.2 will be installed
    --> Processing Dependency: kmod >= 18-4 for package: systemd-219-78.0.1.el7_9.2.x86_64
    --> Processing Dependency: dbus for package: systemd-219-78.0.1.el7_9.2.x86_64
    --> Processing Dependency: libkmod.so.2(LIBKMOD_5)(64bit) for package: systemd-219-78.0.1.el7_9.2.x86_64
    --> Processing Dependency: libcryptsetup.so.12(CRYPTSETUP_2.0)(64bit) for package: systemd-219-78.0.1.el7_9.2.x86_64
    --> Processing Dependency: acl for package: systemd-219-78.0.1.el7_9.2.x86_64
    --> Processing Dependency: libkmod.so.2()(64bit) for package: systemd-219-78.0.1.el7_9.2.x86_64
    --> Processing Dependency: libcryptsetup.so.12()(64bit) for package: systemd-219-78.0.1.el7_9.2.x86_64
    --> Processing Dependency: libqrencode.so.3()(64bit) for package: systemd-219-78.0.1.el7_9.2.x86_64
    --> Running transaction check
    ---> Package acl.x86_64 0:2.2.51-15.el7 will be installed
    --> Processing Dependency: libacl = 2.2.51-15.el7 for package: acl-2.2.51-15.el7.x86_64
    ---> Package cryptsetup-libs.x86_64 0:2.0.3-6.el7 will be installed
    --> Processing Dependency: libdevmapper.so.1.02(DM_1_02_97)(64bit) for package: cryptsetup-libs-2.0.3-6.el7.x86_64
    --> Processing Dependency: libdevmapper.so.1.02(Base)(64bit) for package: cryptsetup-libs-2.0.3-6.el7.x86_64
    --> Processing Dependency: libjson-c.so.2()(64bit) for package: cryptsetup-libs-2.0.3-6.el7.x86_64
    --> Processing Dependency: libdevmapper.so.1.02()(64bit) for package: cryptsetup-libs-2.0.3-6.el7.x86_64
    ---> Package dbus.x86_64 1:1.10.24-15.0.1.el7 will be installed
    --> Processing Dependency: dbus-libs(x86-64) = 1:1.10.24-15.0.1.el7 for package: 1:dbus-1.10.24-15.0.1.el7.x86_64
    --> Processing Dependency: libdbus-1.so.3(LIBDBUS_1_3)(64bit) for package: 1:dbus-1.10.24-15.0.1.el7.x86_64
    --> Processing Dependency: libdbus-1.so.3(LIBDBUS_PRIVATE_1.10.24)(64bit) for package: 1:dbus-1.10.24-15.0.1.el7.x86_64
    --> Processing Dependency: libdbus-1.so.3()(64bit) for package: 1:dbus-1.10.24-15.0.1.el7.x86_64
    ---> Package kmod.x86_64 0:20-28.0.3.el7 will be installed
    --> Processing Dependency: dracut for package: kmod-20-28.0.3.el7.x86_64
    --> Processing Dependency: /usr/bin/xz for package: kmod-20-28.0.3.el7.x86_64
    --> Processing Dependency: /usr/bin/nm for package: kmod-20-28.0.3.el7.x86_64
    ---> Package kmod-libs.x86_64 0:20-28.0.3.el7 will be installed
    ---> Package qrencode-libs.x86_64 0:3.4.1-3.el7 will be installed
    --> Running transaction check
    ---> Package binutils.x86_64 0:2.27-44.base.0.3.el7 will be installed
    ---> Package dbus-libs.x86_64 1:1.10.24-15.0.1.el7 will be installed
    ---> Package device-mapper-libs.x86_64 7:1.02.170-6.0.3.el7_9.3 will be installed
    --> Processing Dependency: device-mapper = 7:1.02.170-6.0.3.el7_9.3 for package: 7:device-mapper-libs-1.02.170-6.0.3.el7_9.3.x86_64
    ---> Package dracut.x86_64 0:033-572.0.3.el7 will be installed
    --> Processing Dependency: hardlink for package: dracut-033-572.0.3.el7.x86_64
    --> Processing Dependency: kpartx for package: dracut-033-572.0.3.el7.x86_64
    --> Processing Dependency: procps-ng for package: dracut-033-572.0.3.el7.x86_64
    --> Processing Dependency: /usr/bin/pkg-config for package: dracut-033-572.0.3.el7.x86_64
    ---> Package json-c.x86_64 0:0.11-4.el7_0 will be installed
    ---> Package libacl.x86_64 0:2.2.51-14.el7 will be updated
    ---> Package libacl.x86_64 0:2.2.51-15.el7 will be an update
    ---> Package xz.x86_64 0:5.2.2-1.el7 will be installed
    --> Running transaction check
    ---> Package device-mapper.x86_64 7:1.02.170-6.0.3.el7_9.3 will be installed
    ---> Package hardlink.x86_64 1:1.0-19.el7 will be installed
    ---> Package kpartx.x86_64 0:0.4.9-134.0.1.el7_9 will be installed
    ---> Package pkgconfig.x86_64 1:0.27.1-4.el7 will be installed
    ---> Package procps-ng.x86_64 0:3.3.10-28.el7 will be installed
    --> Finished Dependency Resolution

    Dependencies Resolved

    ================================================================================
    Package                     Arch   Version                    Repository  Size
    ================================================================================
    Installing:
    nano                        x86_64 2.3.1-10.el7               ol7_latest 438 k
    openssh-clients             x86_64 7.4p1-21.0.1.el7           ol7_latest 654 k
    zip                         x86_64 3.0-11.el7                 ol7_latest 259 k
    Installing for dependencies:
    acl                         x86_64 2.2.51-15.el7              ol7_latest  81 k
    binutils                    x86_64 2.27-44.base.0.3.el7       ol7_latest 5.3 M
    cracklib                    x86_64 2.9.0-11.el7               ol7_latest  79 k
    cracklib-dicts              x86_64 2.9.0-11.el7               ol7_latest 3.6 M
    cryptsetup-libs             x86_64 2.0.3-6.el7                ol7_latest 338 k
    dbus                        x86_64 1:1.10.24-15.0.1.el7       ol7_latest 245 k
    dbus-libs                   x86_64 1:1.10.24-15.0.1.el7       ol7_latest 169 k
    device-mapper               x86_64 7:1.02.170-6.0.3.el7_9.3   ol7_latest 297 k
    device-mapper-libs          x86_64 7:1.02.170-6.0.3.el7_9.3   ol7_latest 325 k
    dracut                      x86_64 033-572.0.3.el7            ol7_latest 331 k
    elfutils-default-yama-scope noarch 0.176-5.el7                ol7_latest  32 k
    elfutils-libs               x86_64 0.176-5.el7                ol7_latest 290 k
    fipscheck                   x86_64 1.4.1-6.el7                ol7_latest  21 k
    fipscheck-lib               x86_64 1.4.1-6.el7                ol7_latest  10 k
    hardlink                    x86_64 1:1.0-19.el7               ol7_latest  14 k
    json-c                      x86_64 0.11-4.el7_0               ol7_latest  30 k
    kmod                        x86_64 20-28.0.3.el7              ol7_latest 125 k
    kmod-libs                   x86_64 20-28.0.3.el7              ol7_latest  53 k
    kpartx                      x86_64 0.4.9-134.0.1.el7_9        ol7_latest  80 k
    libedit                     x86_64 3.0-12.20121213cvs.el7     ol7_latest  88 k
    libpwquality                x86_64 1.2.3-5.el7                ol7_latest  84 k
    libsmartcols                x86_64 2.23.2-65.0.1.el7          ol7_latest 142 k
    libuser                     x86_64 0.60-9.el7                 ol7_latest 400 k
    libutempter                 x86_64 1.1.6-4.el7                ol7_latest  24 k
    lz4                         x86_64 1.8.3-1.el7                ol7_latest  84 k
    openssh                     x86_64 7.4p1-21.0.1.el7           ol7_latest 510 k
    pam                         x86_64 1.1.8-23.el7               ol7_latest 720 k
    pkgconfig                   x86_64 1:0.27.1-4.el7             ol7_latest  53 k
    procps-ng                   x86_64 3.3.10-28.el7              ol7_latest 291 k
    qrencode-libs               x86_64 3.4.1-3.el7                ol7_latest  49 k
    systemd                     x86_64 219-78.0.1.el7_9.2         ol7_latest 5.1 M
    systemd-libs                x86_64 219-78.0.1.el7_9.2         ol7_latest 419 k
    util-linux                  x86_64 2.23.2-65.0.1.el7          ol7_latest 2.0 M
    xz                          x86_64 5.2.2-1.el7                ol7_latest 228 k
    Updating for dependencies:
    elfutils-libelf             x86_64 0.176-5.el7                ol7_latest 194 k
    libacl                      x86_64 2.2.51-15.el7              ol7_latest  27 k
    libblkid                    x86_64 2.23.2-65.0.1.el7          ol7_latest 182 k
    libmount                    x86_64 2.23.2-65.0.1.el7          ol7_latest 184 k
    libuuid                     x86_64 2.23.2-65.0.1.el7          ol7_latest  84 k

    Transaction Summary
    ================================================================================
    Install  3 Packages (+34 Dependent packages)
    Upgrade             (  5 Dependent packages)

    Total download size: 23 M
    Downloading packages:
    Delta RPMs disabled because /usr/bin/applydeltarpm not installed.
    --------------------------------------------------------------------------------
    Total                                              1.4 MB/s |  23 MB  00:16
    Running transaction check
    Running transaction test
    Transaction test succeeded
    Running transaction
    Updating   : libuuid-2.23.2-65.0.1.el7.x86_64                            1/47
    Updating   : libblkid-2.23.2-65.0.1.el7.x86_64                           2/47
    Installing : fipscheck-1.4.1-6.el7.x86_64                                3/47
    Installing : fipscheck-lib-1.4.1-6.el7.x86_64                            4/47
    Installing : cracklib-2.9.0-11.el7.x86_64                                5/47
    Installing : cracklib-dicts-2.9.0-11.el7.x86_64                          6/47
    Installing : libpwquality-1.2.3-5.el7.x86_64                             7/47
    Installing : pam-1.1.8-23.el7.x86_64                                     8/47
    Updating   : libmount-2.23.2-65.0.1.el7.x86_64                           9/47
    Updating   : elfutils-libelf-0.176-5.el7.x86_64                         10/47
    Installing : xz-5.2.2-1.el7.x86_64                                      11/47
    Installing : lz4-1.8.3-1.el7.x86_64                                     12/47
    Updating   : libacl-2.2.51-15.el7.x86_64                                13/47
    Installing : acl-2.2.51-15.el7.x86_64                                   14/47
    Installing : libuser-0.60-9.el7.x86_64                                  15/47
    Installing : libutempter-1.1.6-4.el7.x86_64                             16/47
    Installing : 1:hardlink-1.0-19.el7.x86_64                               17/47
    Installing : libedit-3.0-12.20121213cvs.el7.x86_64                      18/47
    Installing : json-c-0.11-4.el7_0.x86_64                                 19/47
    Installing : kmod-libs-20-28.0.3.el7.x86_64                             20/47
    Installing : libsmartcols-2.23.2-65.0.1.el7.x86_64                      21/47
    Installing : binutils-2.27-44.base.0.3.el7.x86_64                       22/47
    install-info: /usr/share/info/dir: could not read (No such file or directory) and could not create (No such file or directory)
    install-info: /usr/share/info/dir: could not read (No such file or directory) and could not create (No such file or directory)
    install-info: /usr/share/info/dir: could not read (No such file or directory) and could not create (No such file or directory)
    install-info: /usr/share/info/dir: could not read (No such file or directory) and could not create (No such file or directory)
    install-info: /usr/share/info/dir: could not read (No such file or directory) and could not create (No such file or directory)
    Installing : qrencode-libs-3.4.1-3.el7.x86_64                           23/47
    Installing : 1:pkgconfig-0.27.1-4.el7.x86_64                            24/47
    Installing : util-linux-2.23.2-65.0.1.el7.x86_64                        25/47
    Installing : procps-ng-3.3.10-28.el7.x86_64                             26/47
    Installing : kpartx-0.4.9-134.0.1.el7_9.x86_64                          27/47
    Installing : 7:device-mapper-1.02.170-6.0.3.el7_9.3.x86_64              28/47
    Installing : dracut-033-572.0.3.el7.x86_64                              29/47
    Installing : kmod-20-28.0.3.el7.x86_64                                  30/47
    Installing : 7:device-mapper-libs-1.02.170-6.0.3.el7_9.3.x86_64         31/47
    Installing : cryptsetup-libs-2.0.3-6.el7.x86_64                         32/47
    Installing : elfutils-libs-0.176-5.el7.x86_64                           33/47
    Installing : systemd-libs-219-78.0.1.el7_9.2.x86_64                     34/47
    Installing : 1:dbus-libs-1.10.24-15.0.1.el7.x86_64                      35/47
    Installing : systemd-219-78.0.1.el7_9.2.x86_64                          36/47
    Failed to get D-Bus connection: Operation not permitted
    Installing : 1:dbus-1.10.24-15.0.1.el7.x86_64                           37/47
    Installing : elfutils-default-yama-scope-0.176-5.el7.noarch             38/47
    Installing : openssh-7.4p1-21.0.1.el7.x86_64                            39/47
    Installing : openssh-clients-7.4p1-21.0.1.el7.x86_64                    40/47
    Installing : zip-3.0-11.el7.x86_64                                      41/47
    Installing : nano-2.3.1-10.el7.x86_64                                   42/47
    Cleanup    : libmount-2.23.2-61.el7_7.1.x86_64                          43/47
    Cleanup    : libblkid-2.23.2-61.el7_7.1.x86_64                          44/47
    Cleanup    : libuuid-2.23.2-61.el7_7.1.x86_64                           45/47
    Cleanup    : elfutils-libelf-0.176-2.el7.x86_64                         46/47
    Cleanup    : libacl-2.2.51-14.el7.x86_64                                47/47
    Verifying  : fipscheck-lib-1.4.1-6.el7.x86_64                            1/47
    Verifying  : libblkid-2.23.2-65.0.1.el7.x86_64                           2/47
    Verifying  : acl-2.2.51-15.el7.x86_64                                    3/47
    Verifying  : 1:pkgconfig-0.27.1-4.el7.x86_64                             4/47
    Verifying  : libacl-2.2.51-15.el7.x86_64                                 5/47
    Verifying  : util-linux-2.23.2-65.0.1.el7.x86_64                         6/47
    Verifying  : 1:dbus-1.10.24-15.0.1.el7.x86_64                            7/47
    Verifying  : dracut-033-572.0.3.el7.x86_64                               8/47
    Verifying  : pam-1.1.8-23.el7.x86_64                                     9/47
    Verifying  : lz4-1.8.3-1.el7.x86_64                                     10/47
    Verifying  : elfutils-default-yama-scope-0.176-5.el7.noarch             11/47
    Verifying  : kpartx-0.4.9-134.0.1.el7_9.x86_64                          12/47
    Verifying  : cryptsetup-libs-2.0.3-6.el7.x86_64                         13/47
    Verifying  : libmount-2.23.2-65.0.1.el7.x86_64                          14/47
    Verifying  : qrencode-libs-3.4.1-3.el7.x86_64                           15/47
    Verifying  : openssh-7.4p1-21.0.1.el7.x86_64                            16/47
    Verifying  : systemd-219-78.0.1.el7_9.2.x86_64                          17/47
    Verifying  : binutils-2.27-44.base.0.3.el7.x86_64                       18/47
    Verifying  : systemd-libs-219-78.0.1.el7_9.2.x86_64                     19/47
    Verifying  : 1:dbus-libs-1.10.24-15.0.1.el7.x86_64                      20/47
    Verifying  : fipscheck-1.4.1-6.el7.x86_64                               21/47
    Verifying  : 7:device-mapper-1.02.170-6.0.3.el7_9.3.x86_64              22/47
    Verifying  : xz-5.2.2-1.el7.x86_64                                      23/47
    Verifying  : libsmartcols-2.23.2-65.0.1.el7.x86_64                      24/47
    Verifying  : kmod-libs-20-28.0.3.el7.x86_64                             25/47
    Verifying  : elfutils-libelf-0.176-5.el7.x86_64                         26/47
    Verifying  : json-c-0.11-4.el7_0.x86_64                                 27/47
    Verifying  : libuuid-2.23.2-65.0.1.el7.x86_64                           28/47
    Verifying  : procps-ng-3.3.10-28.el7.x86_64                             29/47
    Verifying  : nano-2.3.1-10.el7.x86_64                                   30/47
    Verifying  : cracklib-dicts-2.9.0-11.el7.x86_64                         31/47
    Verifying  : 7:device-mapper-libs-1.02.170-6.0.3.el7_9.3.x86_64         32/47
    Verifying  : libuser-0.60-9.el7.x86_64                                  33/47
    Verifying  : kmod-20-28.0.3.el7.x86_64                                  34/47
    Verifying  : libedit-3.0-12.20121213cvs.el7.x86_64                      35/47
    Verifying  : zip-3.0-11.el7.x86_64                                      36/47
    Verifying  : 1:hardlink-1.0-19.el7.x86_64                               37/47
    Verifying  : cracklib-2.9.0-11.el7.x86_64                               38/47
    Verifying  : openssh-clients-7.4p1-21.0.1.el7.x86_64                    39/47
    Verifying  : libpwquality-1.2.3-5.el7.x86_64                            40/47
    Verifying  : libutempter-1.1.6-4.el7.x86_64                             41/47
    Verifying  : elfutils-libs-0.176-5.el7.x86_64                           42/47
    Verifying  : libmount-2.23.2-61.el7_7.1.x86_64                          43/47
    Verifying  : libuuid-2.23.2-61.el7_7.1.x86_64                           44/47
    Verifying  : libacl-2.2.51-14.el7.x86_64                                45/47
    Verifying  : elfutils-libelf-0.176-2.el7.x86_64                         46/47
    Verifying  : libblkid-2.23.2-61.el7_7.1.x86_64                          47/47

    Installed:
    nano.x86_64 0:2.3.1-10.el7      openssh-clients.x86_64 0:7.4p1-21.0.1.el7
    zip.x86_64 0:3.0-11.el7

    Dependency Installed:
    acl.x86_64 0:2.2.51-15.el7
    binutils.x86_64 0:2.27-44.base.0.3.el7
    cracklib.x86_64 0:2.9.0-11.el7
    cracklib-dicts.x86_64 0:2.9.0-11.el7
    cryptsetup-libs.x86_64 0:2.0.3-6.el7
    dbus.x86_64 1:1.10.24-15.0.1.el7
    dbus-libs.x86_64 1:1.10.24-15.0.1.el7
    device-mapper.x86_64 7:1.02.170-6.0.3.el7_9.3
    device-mapper-libs.x86_64 7:1.02.170-6.0.3.el7_9.3
    dracut.x86_64 0:033-572.0.3.el7
    elfutils-default-yama-scope.noarch 0:0.176-5.el7
    elfutils-libs.x86_64 0:0.176-5.el7
    fipscheck.x86_64 0:1.4.1-6.el7
    fipscheck-lib.x86_64 0:1.4.1-6.el7
    hardlink.x86_64 1:1.0-19.el7
    json-c.x86_64 0:0.11-4.el7_0
    kmod.x86_64 0:20-28.0.3.el7
    kmod-libs.x86_64 0:20-28.0.3.el7
    kpartx.x86_64 0:0.4.9-134.0.1.el7_9
    libedit.x86_64 0:3.0-12.20121213cvs.el7
    libpwquality.x86_64 0:1.2.3-5.el7
    libsmartcols.x86_64 0:2.23.2-65.0.1.el7
    libuser.x86_64 0:0.60-9.el7
    libutempter.x86_64 0:1.1.6-4.el7
    lz4.x86_64 0:1.8.3-1.el7
    openssh.x86_64 0:7.4p1-21.0.1.el7
    pam.x86_64 0:1.1.8-23.el7
    pkgconfig.x86_64 1:0.27.1-4.el7
    procps-ng.x86_64 0:3.3.10-28.el7
    qrencode-libs.x86_64 0:3.4.1-3.el7
    systemd.x86_64 0:219-78.0.1.el7_9.2
    systemd-libs.x86_64 0:219-78.0.1.el7_9.2
    util-linux.x86_64 0:2.23.2-65.0.1.el7
    xz.x86_64 0:5.2.2-1.el7

    Dependency Updated:
    elfutils-libelf.x86_64 0:0.176-5.el7    libacl.x86_64 0:2.2.51-15.el7
    libblkid.x86_64 0:2.23.2-65.0.1.el7     libmount.x86_64 0:2.23.2-65.0.1.el7
    libuuid.x86_64 0:2.23.2-65.0.1.el7

    Complete!
    Removing intermediate container b80fb3f3fd73
    ---> 828aded607b9
    Step 8/16 : RUN usermod -u 54321 oracle     && groupmod -g 54321 oracle     && chown -R oracle:oracle /u01     && chown -R oracle:oracle /home/oracle
    ---> Running in cabb1ee96952
    Removing intermediate container cabb1ee96952
    ---> 59c2bd7df607
    Step 9/16 : COPY --chown=oracle:oracle scripts/*  /u01/app/oracle/
    ---> 1f288473c63f
    Step 10/16 : RUN chmod +xr /u01/app/oracle/*.sh
    ---> Running in 33cab671fafc
    Removing intermediate container 33cab671fafc
    ---> b81bfa5fc341
    Step 11/16 : COPY --chown=oracle:oracle ./wdt /home/oracle/wdt
    ---> 1b65a20dfe85
    Step 12/16 : USER oracle
    ---> Running in b6bc085c102b
    Removing intermediate container b6bc085c102b
    ---> e0be273eb3f7
    Step 13/16 : RUN cd /u01/app/oracle     && ./create_domain.sh     && ./init.sh
    ---> Running in e8e3f2bb41d1

    Initializing WebLogic Scripting Tool (WLST) ...

    Welcome to WebLogic Server Administration Scripting Shell

    Type help() for help on available commands

    domain_name     : [base_domain]
    admin_port      : [7001]
    domain_path     : [/u01/oracle/user_projects/domains/base_domain]
    production_mode : [prod]
    admin password  : [welcome1]
    admin name      : [AdminServer]
    admin username  : [weblogic]
    machine name    : [machine_0]
    ms name 1       : [server_0]
    ms port 1       : [7003]
    ms name 2       : [server_1]
    ms port 2       : [7005]
    cluster name    : [cluster]


    Exiting WebLogic Scripting Tool.

    /u01/oracle/user_projects/domains/base_domain/servers/AdminServer/security/
    Start Admin Server
    Waiting for Admin Server to reach RUNNING state
    .
    .
    JAVA Memory arguments: -Xms256m -Xmx512m
    .
    CLASSPATH=/u01/jdk/lib/tools.jar:/u01/oracle/wlserver/server/lib/weblogic.jar:/u01/oracle/wlserver/../oracle_common/modules/thirdparty/ant-contrib-1.0b3.jar:/u01/oracle/wlserver/modules/features/oracle.wls.common.nodemanager.jar::/u01/oracle/wlserver/common/derby/lib/derbynet.jar:/u01/oracle/wlserver/common/derby/lib/derbyclient.jar:/u01/oracle/wlserver/common/derby/lib/derby.jar
    .
    PATH=/u01/oracle/user_projects/domains/base_domain/bin:/u01/oracle/wlserver/server/bin:/u01/oracle/wlserver/../oracle_common/modules/thirdparty/org.apache.ant/1.9.8.0.0/apache-ant-1.9.8/bin:/u01/jdk/jre/bin:/u01/jdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/u01/jdk/bin:/u01/oracle/oracle_common/common/bin:/u01/oracle/wlserver/common/bin:/u01/oracle:/u01/oracle:
    .
    ***************************************************
    *  To start WebLogic Server, use a username and   *
    *  password assigned to an admin-level user.  For *
    *  server administration, use the WebLogic Server *
    *  console at http://hostname:port/console        *
    ***************************************************
    Starting WLS with line:
    /u01/jdk/bin/java -server   -Xms256m -Xmx512m  -cp /u01/oracle/wlserver/server/lib/weblogic-launcher.jar -Dlaunch.use.env.classpath=true -Dweblogic.Name=AdminServer -Djava.security.policy=/u01/oracle/wlserver/server/lib/weblogic.policy  -Dweblogic.ProductionModeEnabled=true  -Djava.system.class.loader=com.oracle.classloader.weblogic.LaunchClassLoader  -javaagent:/u01/oracle/wlserver/server/lib/debugpatch-agent.jar -da -Dwls.home=/u01/oracle/wlserver/server -Dweblogic.home=/u01/oracle/wlserver/server      weblogic.Server
    <Dec 29, 2020 1:40:01 PM UTC> <Info> <Security> <BEA-090905> <Disabling the CryptoJ JCE Provider self-integrity check for better startup performance. To enable this check, specify -Dweblogic.security.allowCryptoJDefaultJCEVerification=true.>
    <Dec 29, 2020 1:40:01 PM UTC> <Info> <Security> <BEA-090906> <Changing the default Random Number Generator in RSA CryptoJ from ECDRBG128 to HMACDRBG. To disable this change, specify -Dweblogic.security.allowCryptoJDefaultPRNG=true.>
    [Provisioning Script] Waiting for WebLogic server to get started, checking http://localhost:7001/weblogic/ready
    <Dec 29, 2020 1:40:01 PM UTC> <Info> <WebLogicServer> <BEA-000377> <Starting WebLogic Server with Java HotSpot(TM) 64-Bit Server VM Version 25.241-b07 from Oracle Corporation.>
    [Provisioning Script] Status:
    <Dec 29, 2020 1:40:01 PM UTC> <Info> <RCM> <BEA-2165021> <"ResourceManagement" is not enabled in this JVM. Enable "ResourceManagement" to use the WebLogic Server "Resource Consumption Management" feature. To enable "ResourceManagement", you must specify the following JVM options in the WebLogic Server instance in which the JVM runs: -XX:+UnlockCommercialFeatures -XX:+ResourceManagement.>
    <Dec 29, 2020 1:40:02 PM UTC> <Info> <Management> <BEA-141107> <Version: WebLogic Server 12.2.1.3.0 Thu Aug 17 13:39:49 PDT 2017 1882952>
    <Dec 29, 2020 1:40:03 PM UTC> <Notice> <WebLogicServer> <BEA-000365> <Server state changed to STARTING.>
    <Dec 29, 2020 1:40:03 PM UTC> <Info> <WorkManager> <BEA-002900> <Initializing self-tuning thread pool.>
    <Dec 29, 2020 1:40:03 PM UTC> <Info> <WorkManager> <BEA-002942> <CMM memory level becomes 0. Setting standby thread pool size to 256.>
    [Provisioning Script] Waiting for WebLogic server to get started, checking http://localhost:7001/weblogic/ready
    <Dec 29, 2020 1:40:03,855 PM UTC> <Notice> <Log Management> <BEA-170019> <The server log file weblogic.logging.FileStreamHandler instance=109170820
    Current log file=/u01/oracle/user_projects/domains/base_domain/servers/AdminServer/logs/AdminServer.log
    Rotation dir=/u01/oracle/user_projects/domains/base_domain/servers/AdminServer/logs
    is opened. All server side log events will be written to this file.>
    [Provisioning Script] Status:
    <Dec 29, 2020 1:40:04,052 PM UTC> <Notice> <Security> <BEA-090946> <Security pre-initializing using security realm: myrealm>
    <Dec 29, 2020 1:40:04,601 PM UTC> <Notice> <Security> <BEA-090947> <Security post-initializing using security realm: myrealm>
    <Dec 29, 2020 1:40:05,407 PM UTC> <Notice> <Security> <BEA-090082> <Security initialized using administrative security realm: myrealm>
    <Dec 29, 2020 1:40:05,446 PM UTC> <Notice> <Security> <BEA-090083> <Storing boot identity in the file: /u01/oracle/user_projects/domains/base_domain/servers/AdminServer/security/boot.properties.>
    [Provisioning Script] Waiting for WebLogic server to get started, checking http://localhost:7001/weblogic/ready
    [Provisioning Script] Status:
    <Dec 29, 2020 1:40:05,956 PM UTC> <Notice> <JMX> <BEA-149512> <JMX Connector Server started at service:jmx:iiop://0.0.0.0:7001/jndi/weblogic.management.mbeanservers.runtime.>
    <Dec 29, 2020 1:40:06,353 PM UTC> <Notice> <JMX> <BEA-149512> <JMX Connector Server started at service:jmx:iiop://0.0.0.0:7001/jndi/weblogic.management.mbeanservers.domainruntime.>
    <Dec 29, 2020 1:40:06,458 PM UTC> <Notice> <JMX> <BEA-149512> <JMX Connector Server started at service:jmx:iiop://0.0.0.0:7001/jndi/weblogic.management.mbeanservers.edit.>
    [Provisioning Script] Waiting for WebLogic server to get started, checking http://localhost:7001/weblogic/ready
    [Provisioning Script] Status:
    [Provisioning Script] Waiting for WebLogic server to get started, checking http://localhost:7001/weblogic/ready
    [Provisioning Script] Status:
    [Provisioning Script] Waiting for WebLogic server to get started, checking http://localhost:7001/weblogic/ready
    [Provisioning Script] Status:
    <Dec 29, 2020 1:40:12,354 PM UTC> <Notice> <WebLogicServer> <BEA-000365> <Server state changed to STANDBY.>
    <Dec 29, 2020 1:40:12,357 PM UTC> <Notice> <WebLogicServer> <BEA-000365> <Server state changed to STARTING.>
    <Dec 29, 2020 1:40:12,435 PM UTC> <Notice> <Log Management> <BEA-170036> <The Logging monitoring service timer has started to check for logged message counts every 30 seconds.>
    [Provisioning Script] Waiting for WebLogic server to get started, checking http://localhost:7001/weblogic/ready
    [Provisioning Script] Status:
    <Dec 29, 2020 1:40:15,591 PM UTC> <Notice> <Log Management> <BEA-170027> <The server has successfully established a connection with the Domain level Diagnostic Service.>
    [Provisioning Script] Waiting for WebLogic server to get started, checking http://localhost:7001/weblogic/ready
    [Provisioning Script] Status:
    <Dec 29, 2020 1:40:16,702 PM UTC> <Notice> <WebLogicServer> <BEA-000365> <Server state changed to ADMIN.>
    <Dec 29, 2020 1:40:16,796 PM UTC> <Notice> <WebLogicServer> <BEA-000365> <Server state changed to RESUMING.>
    <Dec 29, 2020 1:40:16,857 PM UTC> <Notice> <Server> <BEA-002613> <Channel "Default" is now listening on 0.0.0.0:7001 for protocols iiop, t3, ldap, snmp, http.>
    <Dec 29, 2020 1:40:16,859 PM UTC> <Notice> <Server> <BEA-002613> <Channel "Default" is now listening on 0.0.0.0:7001 for protocols iiop, t3, ldap, snmp, http.>
    <Dec 29, 2020 1:40:16,860 PM UTC> <Notice> <WebLogicServer> <BEA-000329> <Started the WebLogic Server Administration Server "AdminServer" for domain "base_domain" running in production mode.>
    <Dec 29, 2020 1:40:16,884 PM UTC> <Notice> <WebLogicServer> <BEA-000360> <The server started in RUNNING mode.>
    <Dec 29, 2020 1:40:16,898 PM UTC> <Notice> <WebLogicServer> <BEA-000365> <Server state changed to RUNNING.>
    [Provisioning Script] Waiting for WebLogic server to get started, checking http://localhost:7001/weblogic/ready
    [Provisioning Script] Status: HTTP/1.1 200 OK
    [Provisioning Script] WebLogic Server has started
    Deploying WLST Online

    Initializing WebLogic Scripting Tool (WLST) ...

    Welcome to WebLogic Server Administration Scripting Shell

    Type help() for help on available commands

    ***Starting WLST Online Configure DS***
    admin_name      : [AdminServer]
    admin_user      : [weblogic]
    admin_port      : [7001]
    domain_home     : [/u01/oracle/user_projects/base_domain]
    admin_url       : [t3://0.0.0.0:7001]
    target_type     : [Cluster]
    target_name     : [cluster]
    dsname          : [JDBCConnection]
    Connecting to t3://0.0.0.0:7001 with userid weblogic ...
    <Dec 29, 2020 1:40:28,715 PM UTC> <Notice> <JMX> <BEA-149535> <JMX Resiliency Activity Server=AdminServer : Initializing callbacks>
    <Dec 29, 2020 1:40:28,720 PM UTC> <Notice> <JMX> <BEA-149535> <JMX Resiliency Activity Server=AdminServer : Added MBeanServerConnection in DomainRuntimeServiceMBean >
    <Dec 29, 2020 1:40:28,721 PM UTC> <Notice> <JMX> <BEA-149535> <JMX Resiliency Activity Server=AdminServer : Callback is done>
    <Dec 29, 2020 1:40:28,723 PM UTC> <Notice> <JMX> <BEA-149535> <JMX Resiliency Activity Server=AdminServer : Connection already exists for the server. Did not attempt to connect to the server>
    <Dec 29, 2020 1:40:28,725 PM UTC> <Notice> <JMX> <BEA-149535> <JMX Resiliency Activity Server=server_0 : Attempting to connect to the server during initialization >
    <Dec 29, 2020 1:40:28,726 PM UTC> <Notice> <JMX> <BEA-149535> <JMX Resiliency Activity Server=server_0 : Starting JMX connection. forceReconnect value: false>
    <Dec 29, 2020 1:40:28,727 PM UTC> <Warning> <JMX> <BEA-149505> <The Administration Server was unable to establish JMX Connectivity with the server_0 at the JMX Service URL of <none>.>
    <Dec 29, 2020 1:40:28,728 PM UTC> <Notice> <JMX> <BEA-149535> <JMX Resiliency Activity Server=server_0 : No URL found for the server during the initialization>
    <Dec 29, 2020 1:40:28,729 PM UTC> <Notice> <JMX> <BEA-149535> <JMX Resiliency Activity Server=server_1 : Attempting to connect to the server during initialization >
    <Dec 29, 2020 1:40:28,730 PM UTC> <Notice> <JMX> <BEA-149535> <JMX Resiliency Activity Server=server_1 : Starting JMX connection. forceReconnect value: false>
    <Dec 29, 2020 1:40:28,731 PM UTC> <Warning> <JMX> <BEA-149505> <The Administration Server was unable to establish JMX Connectivity with the server_1 at the JMX Service URL of <none>.>
    <Dec 29, 2020 1:40:28,733 PM UTC> <Notice> <JMX> <BEA-149535> <JMX Resiliency Activity Server=server_1 : No URL found for the server during the initialization>
    Successfully connected to Admin Server "AdminServer" that belongs to domain "base_domain".

    Warning: An insecure protocol was used to connect to the server.
    To ensure on-the-wire security, the SSL port or Admin port should be used instead.

    Location changed to edit tree.
    This is a writable tree with DomainMBean as the root.
    To make changes you will need to start an edit session via startEdit().
    For more help, use help('edit').

    Starting an edit session ...
    Started edit session, be sure to save and activate your changes once you are done.
    Create Data Source
    Activating all your changes, this may take a while ...
    The edit lock associated with this edit session is released once the activation is completed.
    Activation completed
    Targeting DS to the AdminServer
    Starting an edit session ...
    Started edit session, be sure to save and activate your changes once you are done.
    Activating all your changes, this may take a while ...
    The edit lock associated with this edit session is released once the activation is completed.
    Activation completed
    Disconnected from weblogic server: AdminServer


    Exiting WebLogic Scripting Tool.


    Initializing WebLogic Scripting Tool (WLST) ...

    Welcome to WebLogic Server Administration Scripting Shell

    Type help() for help on available commands

    admin_name      : [AdminServer]
    admin_user      : [weblogic]
    admin_port      : [7001]
    domain_home     : [/u01/oracle/user_projects/base_domain]
    admin_url       : [t3://0.0.0.0:7001]
    appname         : [SimpleDB]
    appdir          : [/u01/app/oracle]
    apppkg          : [SimpleDB.ear]
    target_name     : [cluster]
    Connecting to t3://0.0.0.0:7001 with userid weblogic ...
    Successfully connected to Admin Server "AdminServer" that belongs to domain "base_domain".

    Warning: An insecure protocol was used to connect to the server.
    To ensure on-the-wire security, the SSL port or Admin port should be used instead.

    Location changed to edit tree.
    This is a writable tree with DomainMBean as the root.
    To make changes you will need to start an edit session via startEdit().
    For more help, use help('edit').

    Starting an edit session ...
    Started edit session, be sure to save and activate your changes once you are done.
    <Dec 29, 2020 1:40:43,902 PM UTC> <Notice> <JMX> <BEA-149535> <JMX Resiliency Activity Server=All Servers : Resolving connection list DomainRuntimeServiceMBean>
    Deploying application from /u01/app/oracle/SimpleDB.ear to targets cluster (upload=false) ...
    <Dec 29, 2020 1:40:57 PM UTC> <Info> <J2EE Deployment SPI> <BEA-260121> <Initiating deploy operation for application, SimpleDB [archive: /u01/app/oracle/SimpleDB.ear], to cluster .>
    You have an edit session in progress, hence WLST will not block for your deployment to complete.
    Started the Deployment of Application. Please refer to the returned WLSTProgress object or variable LAST to track the status.
    Activating all your changes, this may take a while ...
    The edit lock associated with this edit session is released once the activation is completed.
    Activation completed
    Disconnected from weblogic server: AdminServer


    Exiting WebLogic Scripting Tool.

    <Dec 29, 2020 1:40:58 PM UTC> <Warning> <JNDI> <BEA-050001> <WLContext.close() was called in a different thread than the one in which it was created.>

    Initializing WebLogic Scripting Tool (WLST) ...

    Welcome to WebLogic Server Administration Scripting Shell

    Type help() for help on available commands

    admin_name      : [AdminServer]
    admin_user      : [weblogic]
    admin_port      : [7001]
    domain_home     : [/u01/oracle/user_projects/base_domain]
    admin_url       : [t3://0.0.0.0:7001]
    appname         : [SimpleHTML]
    appdir          : [/u01/app/oracle]
    apppkg          : [SimpleHTML.ear]
    target_name     : [cluster]
    Connecting to t3://0.0.0.0:7001 with userid weblogic ...
    Successfully connected to Admin Server "AdminServer" that belongs to domain "base_domain".

    Warning: An insecure protocol was used to connect to the server.
    To ensure on-the-wire security, the SSL port or Admin port should be used instead.

    Location changed to edit tree.
    This is a writable tree with DomainMBean as the root.
    To make changes you will need to start an edit session via startEdit().
    For more help, use help('edit').

    Starting an edit session ...
    Started edit session, be sure to save and activate your changes once you are done.
    Deploying application from /u01/app/oracle/SimpleHTML.ear to targets cluster (upload=false) ...
    <Dec 29, 2020 1:41:06 PM UTC> <Info> <J2EE Deployment SPI> <BEA-260121> <Initiating deploy operation for application, SimpleHTML [archive: /u01/app/oracle/SimpleHTML.ear], to cluster .>
    You have an edit session in progress, hence WLST will not block for your deployment to complete.
    Started the Deployment of Application. Please refer to the returned WLSTProgress object or variable LAST to track the status.
    Activating all your changes, this may take a while ...
    The edit lock associated with this edit session is released once the activation is completed.
    Activation completed
    Disconnected from weblogic server: AdminServer


    Exiting WebLogic Scripting Tool.

    <Dec 29, 2020 1:41:07 PM UTC> <Warning> <JNDI> <BEA-050001> <WLContext.close() was called in a different thread than the one in which it was created.>
    Done!
    Removing intermediate container e8e3f2bb41d1
    ---> fb0e89bf4087
    Step 14/16 : EXPOSE $ADMIN_PORT
    ---> Running in d44a076b9db5
    Removing intermediate container d44a076b9db5
    ---> a372eb7cf39d
    Step 15/16 : WORKDIR $DOMAIN_HOME
    ---> Running in 4b600176f300
    Removing intermediate container 4b600176f300
    ---> ee71a54e2821
    Step 16/16 : CMD ["/u01/app/oracle/startNMWebLogic.sh"]
    ---> Running in 057fbda849e7
    Removing intermediate container 057fbda849e7
    ---> 36d1fe5375ae

    Successfully built 36d1fe5375ae
    Successfully tagged weblogic-to-oci_wls_admin:latest

```shell
[shirok@macbook:weblogic-to-oci]$ docker-compose up -d
    Creating network "weblogic-to-oci_default" with the default driver
    Creating weblogic-to-oci_oracledbinit_1 ... done
    Creating weblogic-to-oci_wls_admin_1    ... done
    Creating weblogic-to-oci_oracledb_1     ... done

3) WebLogicステータス確認コマンド
初期化のステータスを確認するには、次のコマンドをweblogic-to-oci_oracledbinit_1実行して、コンテナの実行が終了したかどうかを確認します。

[shirok@macbook:weblogic-to-oci]$ docker ps
    CONTAINER ID   IMAGE                          COMMAND                  CREATED          STATUS                      PORTS                                                                    NAMES
    ba3267249e74   weblogic-to-oci_wls_admin      "/u01/app/oracle/sta…"   15 minutes ago   Up 15 minutes               0.0.0.0:7001->7001/tcp, 0.0.0.0:7003->7003/tcp, 0.0.0.0:7005->7005/tcp   weblogic-to-oci_wls_admin_1
    aed6ec4b4e28   weblogic-to-oci_oracledb       "/bin/sh -c '/bin/ba…"   15 minutes ago   Up 15 minutes (unhealthy)   127.0.0.1:1521->1521/tcp, 127.0.0.1:5000->5000/tcp, 5500/tcp             weblogic-to-oci_oracledb_1
    465b27d08afb   weblogic-to-oci_oracledbinit   "/bin/sh -c ./setup.…"   15 minutes ago   Up 15 minutes                                                                                        weblogic-to-oci_oracledbinit_1

■ Docker稼働確認

● Orace Database接続確認

1) Oracle database Dockerイメージコンソールへアクセス

[shirok@macbook: ~]$ docker exec -it weblogic-to-oci_oracledb_1 /bin/bash

2) sqlplus接続

[oracle@7fbb1c998c2b /]$ sqlplus / as sysdba

    SQL*Plus: Release 12.2.0.1.0 Production on Wed Jan 6 05:42:23 2021

    Copyright (c) 1982, 2016, Oracle.  All rights reserved.


    Connected to:
    Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

3) Oracle Databaseインスタンス確認

    SQL> select instance_name from v$instance;

        INSTANCE_NAME
        ----------------
        RIDERS

● WebLogic接続確認

1) WebLogicコンソールへアクセス
http://localhost:7001/console でWebLogicコンソールへアクセスし、以下ログイン情報でログイン

・ユーザー名: weblogic
・パスワード: welcome1

01_WebLogic起動.png

2) WebLogicコンソール・ログイン完了
01_WebLogic起動02.png

■ 参考

● マニュアル
Oracle Container Registry
DockerでのWebLogic Serverイメージのビルド
DockerでWebLogic Serverイメージを稼働する際のよくある質問
Supported Virtualization and Partitioning Technologies for Oracle Fusion Middleware
●Oracle LiveLabs
Available Workshops
Migrate WebLogic Server to OCI Workshop
●GitHub
WebLogic on Docker

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【エラー】 Docker build時のエラー(最新版のimageをpullして解決)

概要

  • Dockerの勉強中にbuidでこけたのでその対処をしたので、その備忘。
  • 解決方法としては単にベースのイメージが古かったので新しくpullしてbuildして終了。

状況と対処

buildしたDockerfile

Dockerfileは非常にシンプルで、ubuntu:latestをベースにパッケージをインストールしている。

Dockerfile
FROM ubuntu:latest
RUN apt-get update && apt-get install -y \ 
    curl \
    nginx

エラー

セキュリティーが怪しそうとのことなのでおそらくdocker imageが古い?

$ docker build .
Sending build context to Docker daemon  6.656kB
Step 1/2 : FROM ubuntu:latest
 ---> 9140108b62dc
Step 2/2 : RUN apt-get update && apt-get install -y     curl    nginx
 ---> Running in b37d029342e6
Get:1 http://security.ubuntu.com/ubuntu focal-security InRelease [109 kB]
Get:2 http://archive.ubuntu.com/ubuntu focal InRelease [265 kB]
Get:3 http://security.ubuntu.com/ubuntu focal-security/restricted amd64 Packages [109 kB]
Ign:4 http://security.ubuntu.com/ubuntu focal-security/main amd64 Packages
Ign:5 http://security.ubuntu.com/ubuntu focal-security/universe amd64 Packages
Get:6 http://security.ubuntu.com/ubuntu focal-security/multiverse amd64 Packages [741 B]
Get:4 http://security.ubuntu.com/ubuntu focal-security/main amd64 Packages [516 kB]
Err:4 http://security.ubuntu.com/ubuntu focal-security/main amd64 Packages
  File has unexpected size (515215 != 515734). Mirror sync in progress? [IP: 91.189.91.39 80]
  Hashes of expected file:
   - Filesize:515734 [weak]
   - SHA256:6edc1a6f67f0e67da44c8aa3455144dba75d1f11ecd18bb9881634574c4a5b10
   - SHA1:8639b548198806c25d72f9dd9e9a9d6f86dcb895 [weak]
   - MD5Sum:b29deacaed369971375c55ea72765d06 [weak]
  Release file created at: Wed, 06 Jan 2021 13:47:03 +0000
Get:7 http://archive.ubuntu.com/ubuntu focal-updates InRelease [114 kB]
Get:5 http://security.ubuntu.com/ubuntu focal-security/universe amd64 Packages [646 kB]
Err:5 http://security.ubuntu.com/ubuntu focal-security/universe amd64 Packages

Get:8 http://archive.ubuntu.com/ubuntu focal-backports InRelease [101 kB]
Get:9 http://archive.ubuntu.com/ubuntu focal/restricted amd64 Packages [33.4 kB]
Get:10 http://archive.ubuntu.com/ubuntu focal/universe amd64 Packages [11.3 MB]
Get:11 http://archive.ubuntu.com/ubuntu focal/multiverse amd64 Packages [177 kB]
Get:12 http://archive.ubuntu.com/ubuntu focal/main amd64 Packages [1275 kB]
Get:13 http://archive.ubuntu.com/ubuntu focal-updates/multiverse amd64 Packages [30.0 kB]
Get:14 http://archive.ubuntu.com/ubuntu focal-updates/universe amd64 Packages [897 kB]
Get:15 http://archive.ubuntu.com/ubuntu focal-updates/restricted amd64 Packages [145 kB]
Get:16 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages [916 kB]
Get:17 http://archive.ubuntu.com/ubuntu focal-backports/universe amd64 Packages [4250 B]
Fetched 15.5 MB in 12min 47s (20.2 kB/s)
Reading package lists...
E: Failed to fetch http://security.ubuntu.com/ubuntu/dists/focal-security/main/binary-amd64/Packages.gz  File has unexpected size (515215 != 515734). Mirror sync in progress? [IP: 91.189.91.39 80]
   Hashes of expected file:
    - Filesize:515734 [weak]
    - SHA256:6edc1a6f67f0e67da44c8aa3455144dba75d1f11ecd18bb9881634574c4a5b10
    - SHA1:8639b548198806c25d72f9dd9e9a9d6f86dcb895 [weak]
    - MD5Sum:b29deacaed369971375c55ea72765d06 [weak]
   Release file created at: Wed, 06 Jan 2021 13:47:03 +0000
E: Failed to fetch http://security.ubuntu.com/ubuntu/dists/focal-security/universe/binary-amd64/Packages.gz
E: Some index files failed to download. They have been ignored, or old ones used instead.
The command '/bin/sh -c apt-get update && apt-get install -y    curl    nginx' returned a non-zero code: 100

解決

docker imageを確認すると3か月前だったのでとりあえず最新版のimageをpullしてそれを元にbuildしたらいけた。

$ docker images
REPOSITORY                     TAG       IMAGE ID       CREATED         SIZE
ubuntu                         latest    9140108b62dc   3 months ago    72.9MB

$ docker pull ubuntu:latest
latest: Pulling from library/ubuntu
da7391352a9b: Pull complete
14428a6d4bcd: Pull complete
2c2d948710f2: Pull complete
Digest: sha256:c95a8e48bf88e9849f3e0f723d9f49fa12c5a00cfc6e60d2bc99d87555295e4c
Status: Downloaded newer image for ubuntu:latest
docker.io/library/ubuntu:latest

もう一度docker buildしてみたら成功した。

$ docker build .
Sending build context to Docker daemon  6.656kB
Step 1/3 : FROM ubuntu:latest
 ---> f643c72bc252
Step 2/3 : RUN apt-get update
 ---> Running in 526d97fff024
Get:1 http://archive.ubuntu.c

略

Successfully built a4360c2d987b
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む