ギャバンITサービス
お菓子の家が作れるシステムエンジニアです

windows11+Rancherを使ったdocker環境

個人的には、仮想化ではvmwareから利用しはじめて、15年以上たつ。 dockerは5年以上。 実務でvirtualboxやvagrant使うことはあったけど、wslでdocker使ったことない。 そもそもwslってどんなんやろ、ってとこから始まる。 dockerは、linuxで動かしてmacからdjango開発ソース作りながら使ってる。 実務でgke扱うチャンスがあり、その開発環境をwsl2+rancherで扱うことになったので練習してみる。 win11 + wsl2 msの概要ドキュメントをまずは読んだ。 Windows Subsystem for Linux とは | Microsoft Learn learn.microsoft.com linuxバイナリを動かす環境をサンドボックスみたいな感じで使えるってことか。 wsl1が最初にあったもので、wsl2ならlinuxカーネルが動くらしい。 vscodeのプラグインにremote wsl拡張機能ってのがあるから推奨ともあった。 wslインストール 導入方法を解説してくれてるサイトがあった。 win10と11で導入方法が違うらしい。winverしたときに見えるバージョンにも制限あるらしい。 作者さんありがとう。 Windows+WSL2でDocker環境を用意しよう - カゴヤのサーバー研究室 www.kagoya.jp win10だとOS機能を追加してからmicrosoft storeからダウンロードして使うらしい。 win11だとwsl --installってやったらええだけ。 docker desktopインストール すんなり入った。 OS再起動必要やけどdockerは使えるみたいでhello-worldでイメージをpullしてできてた。 docker desktopの画面でもイメージ取れてることがわかった。 docker-compose versionってやったらv2.17.3が戻るから使えるんかもしれん。 データ置き場 データ置き場調べてみた。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 C:\Users\nari\AppData\Local\Docker のディレクトリ 2023/05/06 04:59 <DIR> . 2023/05/06 04:52 <DIR> .. 2023/05/06 04:35 0 backend.lock 2023/05/06 04:46 <DIR> engine_tasks 2023/05/06 04:31 881 install-log.txt 2023/05/06 04:35 <DIR> log 2023/05/06 04:38 201,381 log.0.txt 2023/05/06 04:43 339,923 log.1.txt 2023/05/06 04:59 595,139 log.2.txt 2023/05/06 05:06 68,858 log.txt 2023/05/06 04:46 <DIR> tasks 2023/05/06 04:46 <DIR> wsl 6 個のファイル 1,206,182 バイト 6 個のディレクトリ 56,264,491,008 バイトの空き領域 C:\Users\nari\AppData\Local\Docker> hyper-vで使うvhdxファイルがあるなぁ。150MBぐらいある。 ...

jupyterlabのdockerコンテナを作りなおすのを生成AIに手伝ってもらう

使う場面 jupyterlabってのはpythonとかをちょっと試したいときとかに使う。勉強で参照した小さな処理の実行とか、pythonの処理の習作とかを動かすから、ないと困る。 似たようなものでgoogleのcolabとかあるけど、機密情報をそんなところでホイホイ扱うと、業務で必要な加工のためとはいえ勝手に顧客データアップロードすることになってしまう。 色々考えて、pythonをインタプリタっぽく使うときはdocker環境のjupyterlab一択。 バージョンアップ jupyterlabのdockerコンテナにログインして、たまに手動でpipからバージョンアップしてる。 これを久しぶりにdockerイメージから作り直したいから、gemini先生に手伝ってもらおっかな。 3年ぐらい前にjupyter をdocker-composeで使い始めて、ほぼ当時のdockerイメージをそのまま使ってた。 今回はdockerファイルの中でpip系のインストールするモジュールをダラダラ書くんやなくて、requirements.txtを使うようにしたいなぁ。 自分用のdocker compose構成とかあるし、gemini先生に聞いてみて参考にさせてもらおっか。 やりたいこと こんな感じのことやりたい。プロンプト作るときの元にする。 pythonのバージョンをrc版でない最新に上げる(dockerhubで公開されているpythonのバージョン確認したもの使う) 今までdockerファイルに書いてたpip系のインストールをrequirements.txtで指定するように変更する(今回実現したいこと) グラフ描いたときに日本語扱えるようにする(dockerイメージをビルドするときに日本語フォント入れる) 今まで作業で作ったテキストやipynbを維持して使う(使う側には必須ね) docker-composeやなくてdocker compose環境で使って公開ポートを指定して使う(compose.ymlってリクエストしたらやってくれるやろか) なんも知らんフリをして書いてもらう。 大事なのは、自分の環境にフィットさせるのは自分でやらないといけない。 生成AIは大筋8〜9割ぐらいあっているものを提供してくれるけど、だいたい残りの1割ぐらいは自分で書き直して使う必要があるんよね。 「こう書こう」ってモヤっとしたイメージあるけど、gemini先生に補助してもらいましょ。 dockerhubの確認 ビルドするときにはdockerhubの公開モジュールを使う。 jupyterlabのもあるんやけど、種類が多すぎてどれ使うねんって感じ。 https://hub.docker.com/u/jupyter できるだけofficialイメージをベースにしておいて必要なものは追加してビルドするから、pythonをベースイメージにしといてjupyterlabのモジュールをpipで追加して使いましょ。 タグにslimってついてるのが小さめのイメージやから、それをdockerfileのfrom指定で使う。 3.14がそろそろメインになりそうやけど、rcってついてるから今は3.13使うかな。 https://hub.docker.com/_/python gemini先生に問う 具体的に何をどう作るか考えてみる。 1 2 3 4 5 6 docker composeで以下の条件で、jupyterlabをビルドするためのdockerfileとcompose.yml定義を作って ・jupyterlabではなくpython3.13.3-slim-bookwormをベースにしてdockerfileを定義 ・requirements.txtを使ってjupyterlab/matplotlib/scikit-learnを指定 ・pythonで日本語ゴシックフォントを扱う ・公開ポートは21088を使う ・compose.ymlで永続化領域workspaceは./nariDockerDat/sv_jupyter/を指定して pythonのmatplotlibでグラフを描くとき、タイトル・縦軸・横軸・判例とかに日本語使いたい場合があるんやけど、そのときはフォントを入れとかな表示うまいことできん。 あと、ポート番号と永続化領域は他にも動かしてるコンテナあるからちゃんと指定したいから、そういうことも加味して考えてくれたら嬉しいなぁ。 gemini先生の応答 質問してみたらすぐに答えが戻る。 ...

 ⭐️

chatGPTに画像作成とコンテナの先生やってもらう

夏にchatGPTやってみたの忘れてた。 openaiの試験利用してみたときのメモ。 ログインしてく アカウント作ってログイン。 普通に2段階認証な。 特に困らずストレートにプロンプト使える。 日本語でええんやな。 簡単な質問とか 使い方そのものを教えてもらうのね。 ネットの中探しても、質問の仕方とかいっぱい書いてくれてる人がいるから、そういうのを参考にしてもええ。 画像作る練習 画像って作れるんかな。 サンプルのプロンプトでやってみたら即座に応答返ってくる。 気持ち悪い画像やなぁ。 返答は英文で下の方に出力されてる。「明暗法」のことを「キアロスクーロ」ってイタリア語使ってるな。 1日になんかもリクエストできるわけやないけど、画像作れるみたい。 「ルネサンス様式」とかで画風指定するみたいやけど、「寺沢武一みたいな雰囲気」とかマイナーなのやっても理解してくれんかったな。 ロゴ作る練習 どこかのサイトで書いてあったんやけど、生成AIができることは、自分でもできるけど数や回数の実施が困難なものを具体的に作らせる、みたいな感じやったと思う。 自分のサイトのロゴとか作ってくれへんかなぁ。 漠然と思ったんでやってみた。 1 2 3 社名はギャバンITサービス、背景は青と黄色を使用し、 文字は明朝体で白、シンプルでクリーンなデザイン、 技術性と信頼性を強調したロゴを1024x1024のjpegで作って。 なんやねん画像の中の文字が指示したもんにできんのか。 英字やったらできるんかな。 もういっちょ。 1 2 3 社名はGavannITservice、背景は紺色と黄色を使用し、 文字は明朝体で白、シンプルでクリーンなデザイン、 技術性と信頼性を強調したロゴを1024x1024のjpegで作って。 何回かやってみたんやけど、日本語で指示やったらアカンのかなぁ。 画像に文字を入れるのは自分でやったほうがええんかもしれん。 自分の業務を助けてくれるんか 普段使ってるdockerコンテナを動かすための方法とか教えてくれるんやろか。 chatGPTにコンテナの作り方を聞いてみる。 もちろん自分で書いたものがあるから、答えはだいたい想像できるけど、どう教えてくれるのか確認してみる。 ...

mariadbを10.11(jammy)から11.4(noble numbat)へ切り替え

母艦として利用してるローカルlinuxも、xrdpコンテナもベースosをjammyからnumbatへ切り替えた。 ローカルkubernetesもminikubeからmicrok8sに切り替えて、利用イメージをnumbatへ切り替えた。 google cloudの中のベースosもxrdpも同じくnumbatへ切り替えた。 面倒やし書かへんけど、業務利用してるawsの中のamazonlinux2023で動かしてるコンテナもnumbatのxrdpに変えてみた。 今月けっこうがんばったな。 もしかしてと思ってdockerhub見たら、mariadbもベースosがnumbatのが出てるやん。 ただ上がるだけやったら放置やけど、LTSが出とる。 コンテナのバージョンアップしたほうがええな。 検証利用やし、メモなしで業務利用のawsの中のmariadbをnumbatにバージョン上げてダンプファイル突っ込んだら、あっさり動いた。 今回は母艦の中のdockerで動いてるmariadbをnumbatに上げる。 mariadbのダンプファイルはテキストになってて、createしたりinsertしたりするからデータの保全はほぼ常にできてる。 バージョンの特定 世間一般へのアナウンスは11.4がLTSってなってた。 MariaDB | endoflife.date endoflife.date dockerhubにタグがあって11.4がある。 hub.docker.com 11.4-nobleは11.4.2ってのと同じdigestになってるから、11.4.2を使えばええっぽい。 11.4.2より新しい11.5ってのもあるけど、LTSやないみたいやから要らん。 ubiってもしや? なんと、タグ名にubiってのがついてるのがある。 もしかしてUniversalBaseImageの略? redhatのこととちゃうんか? ググったら出てきた。 UBI based Docker Official Images - MariaDB.org mariadb.org 「エンタープライズ向けユーザにお知らせでーす」って赤い帽子かぶってるやん。 いろんなプラットフォームで動いてくれるのはええことかなって思う。 サポートの都合でredhat一択っていうユーザ企業もあるやろし。 redhatは母艦にあるubuntuに比べたら、使ってるカーネルが古い傾向があったはず。 dockerは親ホストとコンテナがカーネル共有するから、わけわかめな誤動作出たらイヤやしubiは使わん。 ibmの息がかかったプロダクトはredhat/centosみたいな末路たどるんとちゃうかってイヤな予感。 mysqlがubi使ってもええけど、mariadb大丈夫か? もしDBMSを切り替えるとしたら、postgresqlでもええけど、あのデータベースは運用途中で勝手に最適化動いて遅くなるのがイマイチ。 何年か前に業務で、javaのガベージコレクションがまとめて動いたときみたいな、悲惨な応答速度になることが夜間バッチであったな。 別のデータベースの可能性を探しながら様子見るしかないな。 どのへんが変わったか データベースそのものを変えるときはsql発行で使えんようになったものとか、使ってる処理に制限が出て影響出えへんかを気にする。 シンプルなsqlだけ使ってたら気にせずでええんやけど、ストアドとか使ってたらdbmsの変更すらできん。 世の中にはこのせいでoracleから抜け出せへんユーザ企業あるやろしな。 同じデータベースで、しかもバージョン変更だけやし、djangoから利用するのが前提やから、それほど気にせずアプリケーションテストでほぼ大丈夫なはずやけど、リリースノートは軽く読む。 MariaDB 11.4.2 Release Notes | MariaDB Documentation mariadb.com けっこういっぱい書いてある。 LTSやししゃぁないんかもしれん。 mysqldumpはmariadb-dumpに変わったんかな。 データの流し込みのとき気をつけなアカンかもな。 真面目に英語読んだのは5行。あとは読む気が萎えた・・・。 バグ対処とかいろいろあるんやろな。 型とかsqlは致命的な変更なさそうに思うけど大丈夫なんかなぁ。 事実を列挙するだけやのうて、使う側目線でもうちょっと読みやすかったらええのに。 どう保全するか 扱ってるデータベースには、djangoアプリからお金の情報/時間の情報/活動記録として数値とテキスト、名刺とか受け取り資料のpdf/jpegがblob列に入ってる。 帳簿は7年分を別途でpdf保管してるから、数字とかテキストを目検で追いかけたり、登録可否を確認する。 古いほうのバージョンのdbmsからのダンプを登録できる(インポート) 7年分の合計金額が1円単位であう(sql集計の確認) djangoのmatplotlibで円グラフ表示させてるパーセンテージが小数点以下でズレてへん(djangoでの集計) 月次の活動記録のテキストとpdf/jpegを任意で拾って化けてたり読み取り不良になってへん(blob列のデコード) mariadbに設定してるmax_allowed_packetを超えへんサイズのpdfがblob列にinsertできる(blob列へのbase64保管) 極端に挙動が遅くなってたりせんか(django画面での応答速度) 意識しながらdjangoの画面を開いて確認やな。 ...

 ⭐️

Dockerでoracle21(compose利用)

oracleとのつきあい長い。 1990年代のoracle7からやし、まぁ苦しい思い出もある。 当時フリーの技術者の方が基本設計と詳細設計やってて、なんと日本語でテーブルと項目の定義作ってはった。 ms-accessの延長みたいなことやってるし、ヘンな構成作るから相当苦しめられたっけなぁ。 dockerでバージョン12/18/19のoracle動かしたことはあるんやけど、やり方思い出せんかったからメモ書いとく。 そろそろ23出るんやろけど、今は21がダウンロードできる最新っぽかった。 おおまかな使い方は、 oracleインストール用のzipをダウンロード 作業用フォルダの準備とdockerイメージを作るための処理をgitからダウンロード gitからダウンロードしたフォルダにインストールで使うoracleのzipファイルを置く dockerビルドしてイメージ作る dockerのoracleイメージを使ってdocker composeで起動 クライアントから接続 前はdocker-compose使って動かしてたけど、今回からdocker composeやね。 ここ でdocker-compose.ymlの書き方だけ残してたけど、ビルドのことは書いてへんかったなぁ。 今はV2のdockerやからcompose.ymlで定義やってく。 download zip このへんからダウンロードする。 ようけあるなぁ。 オラクル・データベース・ソフトウェアのダウンロード | オラクル | Oracle 日本 www.oracle.com windows/linux/solaris/hp-ux/aixとかあるけど、linuxホストのdockerコンテナで動かすからlinux用でええ。 大昔のOTNアカウントでログインしてダウンロードするだけ。 もうOTNってないんかもしれんけど、アカウント使えるのは使えてるで。 作業用のフォルダを作る コンテナ用の永続化領域でもある。 1 2 3 cd /docker/nariDockerDat mkdir sv_ora21 cd sv_ora21 git cloneする gitにenterprise editionのoracleイメージを作るための材料を置いてくれてる。 GitHub - steveswinsburg/oracle21c-docker: A docker container for running Oracle 21c github.com ほな取ってきましょ。 1 2 3 4 5 6 7 8 9 10 11 nari@nafslinux-ubu22:/docker/nariDockerDat/sv_ora21$ git clone https://github.com/oracle/docker-images Cloning into 'docker-images'... remote: Enumerating objects: 17268, done. remote: Counting objects: 100% (1910/1910), done. remote: Compressing objects: 100% (479/479), done. remote: Total 17268 (delta 1556), reused 1640 (delta 1408), pack-reused 15358 Receiving objects: 100% (17268/17268), 10.81 MiB | 27.67 MiB/s, done. Resolving deltas: 100% (10187/10187), done. nari@nafslinux-ubu22:/docker/nariDockerDat/sv_ora21$ ls LINUX.X64_213000_db_home.zip dat docker-images nari@nafslinux-ubu22:/docker/nariDockerDat/sv_ora21$ サイトからgit cloneしたらわかるんやけど、データベースだけやなくweblogicとかOpenJDKのdockerイメージを作るdockerfile入ってるみたい。 ...

 ⭐️