- 投稿日:2021-01-07T19:44:41+09:00
Dockerとコンテナの概要
この記事に関して
社内の若手勉強会用に作成しました
できるだけ簡単に、概要の理解、環境構築、実際に動作させるところまで説明しています環境
- Windows 10
- Docker for Windows 2.3.0.4 stable edition
- 認証proxyが存在(項目をわけているので、proxyが無い方はとばせばOK)
Dockerとコンテナの概要
コンテナとは
仮想化技術の1つ
Dockerとは
下記に示すコンテナエンジンの1つ
従来の仮想化(ハイパーバイザ型)とコンテナの違い
- コンテナはホストのOSのカーネルを共有するため、リソースの使用率が低く、起動が早い
- 依存関係をコンテナ内にパッケージ化することができる
→コンテナ化されたアプリケーションは別環境でも実行することができる(可搬性)
従来のハイパーバイザ型では、別環境で動かす際、素材の入手と手動での環境構築が必要だったOSとOSカーネルの話
- OSカーネル
- ソフトウェアとハードウェアの仲介を行うOSの中でもメインの役割を担うもの。
- 有名なカーネルとしてはLinux、Windowsカーネル(?)がある
OS
- カーネルの上に、ソフトウェア(UI,ドライバ、開発者ツール等)を乗せたもの
- Linuxカーネルも、ソフトウェアによってUbuntu、CentOS、RHELといったOSに分かれる
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カーネルをコンテナで共有している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でコンテナから出ることができる
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.confindex.htmlhello 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が表示された
実際にコンテナを使ってみた感想
現在所属するプロジェクトでは、様々な技術を使用しているため
逐一環境構築するのが大変だったが、Dockerを使用すると、
Dockerfileを生成し、ソースリポジトリに入れておけば
メンバが各々コンテナ環境を作成して手を動かせるので非常に有用だと感じる
実際にはdocker-composeという複数コンテナを立てられる技術を使用しているのだが
力尽きたので別記事を参照ください
また、実際に運用するとなるとk8s等のオーケストレーションツールの活用が必須だが
フィジビリティ確認等軽く動かす程度ならこの程度の知識で十分だと思った
- 投稿日:2021-01-07T17:42:46+09:00
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の画面にうつりましょう。今回は、
container_lambda
という名前でリポジトリを作成します。
名前を決めたら、一番下のリポジトリ作成
を押してください次に、このリポジトリに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の画面に行き、関数の作成を押します。
コンテナイメージ
を選択- 関数名をつける(今回は
container_lambda
)- 先ほどデプロイしたDocker Imageを指定 そして
関数の作成
を押すと、画面が遷移します。 しばらくすると上の帯が緑になって、lambdaのセットアップが終わります。右上のテストを定義し、実行してみると...
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で動かしてみたいと思います!
- 投稿日:2021-01-07T17:42:46+09:00
【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の画面にうつりましょう。今回は、
container_lambda
という名前でリポジトリを作成します。
名前を決めたら、一番下のリポジトリ作成
を押してください次に、このリポジトリに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の画面に行き、関数の作成を押します。
コンテナイメージ
を選択- 関数名をつける(今回は
container_lambda
)- 先ほどデプロイしたDocker Imageを指定 そして
関数の作成
を押すと、画面が遷移します。 しばらくすると上の帯が緑になって、lambdaのセットアップが終わります。右上のテストを定義し、実行してみると...
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で動かしてみたいと思います!
- 投稿日:2021-01-07T12:43:54+09:00
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については、これからどんどん勉強して記事を載せていこうと思います。間違っている説明がありましたら、コメントで指摘してくださると幸いです。
- 投稿日:2021-01-07T11:37:22+09:00
Docker簡単構築データベース(PostgreSQL)
TL;DR
Dockerでお手軽にPostgreSQLを作っちゃおうぜ、という記事である。
研修記事のためツール等々決め打ちにしてあるが、その辺はドンマイなのである。まずダウンロードを仕掛けとこう
今回SQLクライアントはDBeaverを使う。取り敢えず最新版をとってくれば良い。
https://dbeaver.io/ダウンロード中にサクッとDBを立ち上げてしまおう。
Docker Desktop for Windows
これがないと話にならない。まずはインストールしてしまおう。
https://docs.docker.jp/docker-for-windows/install.htmlPowerShellで
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 dbDBeaverはダウンロードできたかな
インストールして立ち上げてみよう。
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で反応するはず。
servicesにappを追加して、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.utf8docker-compose.ymlversion: "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
- 投稿日:2021-01-07T09:17:23+09:00
[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 に記載の手順に従って構築していきます。
2. Compute の作成
まずは OCI で Compute を作成していきます。
OCI Console の左上のハンバーガーメニューをクリックし、[コンピュート] - [インスタンス] をクリックします。
インスタンス名を入力してください。ADはどれを選択しても大丈夫です。
イメージは Oracle Linux のデフォルトで選択されるバージョンとしました。
シェイプは今回 4 Node RAC とするので、なんとなく4コアくらい欲しいかなと思い VM.Standard2.4としました。
ネットワーク(VCN)は事前に作成済みという前提です。今回はInternetから接続可能な Public Subnet に作成します。Internet 経由で接続するため、[パブリックIPアドレスの割当] も選択します。
SSHキーの追加はお好みの方法で構いません。今回は [SSHキー・ファイルの選択] で事前に作成していたSSHキーを登録しました。
デフォルトだとブート・ボリュームが46GB程度しかなく、Docker で Oracle Database を構成するにはちょっと足りません。おそらく100GB程度あれば大丈夫ですが、今回は余裕を持って200GBとします。
なお、ここで指定するサイズは、Oracle Database の データファイルを格納する ASMディスク分の容量は含みません。ASM 分は後ほど追加しますので、一旦は考慮しなくて大丈夫です。
インスタンスが [実行中] になったら作成完了です。
[パブリックIPアドレス] が表示されるので、このIPアドレスにSSHでログインします。
3. Compute にログイン
Teraterm等のSSHクライアントで、作成したComputeにログインします。
- 接続先 : [パブリックIPアドレス]
- ユーザ名 : opc
- パスフレーズ : SSHキー作成時に指定していれば、ここでも同じものを指定
- 秘密鍵 : Compute作成時に指定したSSH公開鍵と対になる秘密鍵を指定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 update5-2. git インストール
Oracle 公式の Docker Image をクローンするため、gitをインストールします。
[opc@rac-instance01 ~]$ sudo yum install git5-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直接だとダウンロードできないので、ちょっと小細工します。
ライセンスのチェックを入れ、Download のボタンをクリックします。
ダウンロードが始まったら、すぐにブラウザ上で一時停止します。
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 も同じ場所にダウンロードしてください。
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-engineDocker を起動します。
[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 ago5-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 -p5-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=systemd6. 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 found6-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 a47b39a3b43bebcc1d8a7676ac6786a581919f0dd20cab79c0ffbcb7005153ea6-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_file6-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.keyecho で パスワードとする文字列をファイルにリダイレクトします。
今回は "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_pwdfile6-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 の左上のハンバーガーメニューをクリックし、[コンピュート]-[ブート・ボリューム]を選択します。
[ボリューム・サイズ(GB)] の入力欄に、希望のASMサイズ分プラスした値を入力します。今回は100GB分をASMとするため、元々の 200GB から 100GB 足して、300GB とします。
入力したら、[変更の保存] をクリックします。
するとこんなのが出るので、[再スキャン・コマンド] を控えておきます。
アイコンがオレンジから、グリーンの[使用可能]に戻ったら、OCI Console での作業は完了です。
現在のブロック・デバイスの状態を確認します。
特に変わっていません。[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.07-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 racnode17-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.08-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 racnode28-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.09-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 racnode39-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.010-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 racnode410-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 環境は検証・開発目的のみで利用可能です。決して本番環境では使用しないようにお願いいたします。
- 投稿日:2021-01-07T07:32:34+09:00
CI/CDパイプラインとDocker
Dockerを使った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が走り、アプリがデプロイされる。
- 投稿日:2021-01-07T00:38:19+09:00
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]をクリック
2) Install Docker Desktop on Mac画面
[Download from Docker Hub]をクリック
3) Docker Desktop for Mac画面
[Get Docker]をクリック
4) Dockerインストール
Down loadしたDockerファイルをクリックし、Applicationsアイコンへドラッグ&ドロップしてインストール
● Dockerセットアップ
2) Get Started with Docker画面
[Start]をクリック
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/ .4) Now,build the image画面
画面にある以下コマンドをコピーして実行し完了したら、[Next Step]をクリック[shirok@macbook: ~]$ cd getting-started5) Run your first container画面
画面にある以下コマンドをコピーして実行し完了したら、[Next Step]をクリック[shirok@macbook: ~]$ docker run -d -p 80:80 --name docker-tutorial docker101tutorial6) Now save and share your image
[Sign in here]をクリック
7) Run your first container画面
[Next Step]をクリック
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■ WebLogicコンテナ入手
wgetでWebLogicコンテナを入手します。
wgetコマンドがインストールされていない場合、インストールします● Homebrewインストール
MacBookで wgetコマンドを使えるようにするためにHomebrewをインストール
1)Homebrewホームページへアクセス
https://brew.sh/index_ja へアクセスし、インストール項目にあるコマンドをコピーし、macOSのターミナル貼り付けてインストール
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.sh2) インストール確認
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.zip3) 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.sh4) 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/
● Docker Hub: Oracle WebLogic Server
1) Weblogic イメージ: https://hub.docker.com/_/oracle-weblogic-server-12c に移動し、[Proceed to Checkout]をクリック
2)ログイン・アカウント情報を記入し,ライセンス条項の内容を確認し、同意できれば[Get Content]をクリック
● Docker Hub: Oracle Database
1) Oracle Databaseページ: https://hub.docker.com/_/oracle-database-enterprise-edition に移動し、[Proceed to Checkout]をクリック
2)ログイン・アカウント情報を記入し,ライセンス条項の内容を確認し、同意できれば[Get Content]をクリック
● 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.zip3)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 ... done3) 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/bash2) 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 Production3) Oracle Databaseインスタンス確認
SQL> select instance_name from v$instance; INSTANCE_NAME ---------------- RIDERS● WebLogic接続確認
1) WebLogicコンソールへアクセス
http://localhost:7001/console でWebLogicコンソールへアクセスし、以下ログイン情報でログイン・ユーザー名: weblogic ・パスワード: welcome1■ 参考
● マニュアル
・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
- 投稿日:2021-01-07T00:19:36+09:00
【エラー】 Docker build時のエラー(最新版のimageをpullして解決)
概要
- Dockerの勉強中にbuidでこけたのでその対処をしたので、その備忘。
- 解決方法としては単にベースのイメージが古かったので新しくpullしてbuildして終了。
状況と対処
buildしたDockerfile
Dockerfileは非常にシンプルで、ubuntu:latestをベースにパッケージをインストールしている。
DockerfileFROM 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