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

Dockerでmariadbバージョンアップ(詳細編4)

概要編から参照されるための詳細編4。 google cloudでdockerコンテナの永続化領域をgoogle driveへバックアップする コンテナはすべて永続化領域を持たせてる。 前からやってて、業務用の文書やdockerの永続化領域の一部をgoogle driveにzip保管してる。 自分の場合はnariDockerDatってフォルダがその対象。 これをlocal-linuxに展開して使うと、本番データのコピーをいつも使って運用するようになる。 gcpからバックアップの速度 google driveへのzip書き込みはけっこう速い。 gcpの中のxrdpコンテナからrcloneを使ってバックアップするんやけど、rcloneはrsyncみたいな使い勝手でシェルスクリプトから呼び出す。 10GBぐらいのサイズのzipファイルのrclone処理が、3年ぐらい前は10分ぐらいかかってたのが、今は3分もかからない。 https://www.speedtest.net でlocal-linuxのxrdpコンテナが 400〜500Mpbs 出るのが、gcpのxrdpコンテナだと 5000Mbps 速度が出る。 これは、めっちゃくちゃ速い。2022年に測定しなおしたら、また速度上がってた。 測定した数字で10倍以上、xrdpコンテナ内のfirefoxでgoogle drive開いてもgcpの中だと3倍以上速く感じる。 しかもこの速度、曜日で変動したりしない。 ネットワークの障害とかがなければ、いつも同じ。 けど、嬉しがって何度も使ったらアカン。 gcpへのアップロードは課金ないけど、ダウンロードは課金がある。 それがgoogle driveならgcpからのダウンロードやから、コストがかかる。 自分がgcpを使う理由の1つに、バックアップにかかるコストを低く抑えられることがある。 試験利用したのはかなり昔やけど、gcpからgoogle cloudへのバックアップ速度とコストは、awsと組み合わせたときのものよりも安くて済んだから。 gcpやめられまへんなぁ。 永続化領域保管の前に mariadb10.5から10.11へのバージョンアップがうまくいったので、いったん全コンテナ停止してdocker-compose.ymlから現行のmariadbの記述を外す。 永続化領域も一時的に退避して、新しいほうのmariadbだけが動く状態にしておく。 gcpからコンテナの永続化領域をバックアップ 実際のバックアップ処理。 local-linuxのバックアップ処理を流用して作ってて、利用OSを変更する都度内容更新してる。最近はcentos8からubuntu20へ乗り換えた頃やったかな。 いくつかあるSRC_ROOTから、BACKUP_ROOTへ向けてバックアップして、tar.gzしてからzip化する処理を呼び出す。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 #!/bin/sh ## ------------------------------------------------------------------------- ## Script Name : ## Created by : T.Naritomi ## on : 2007.12.20 ## Updated by : 2019.02.14 ## on : ## Parameters : $1 = password ## Return Code : 0=Normal End ## Comments : ## ------------------------------------------------------------------------- ## ---detail---------------------------------------------------------------- SRC_ROOT=/gvis/nari SRC_ROOT1=/nariDocs/Docker SRC_ROOT2=/gvis/log SRC_ROOT3=/gvis/script SRC_ROOT4=/gvis/nari/nariDocs/gvis_conf SRC_ROOT5=/gvis/nari/nariDocs/smb/common SRC_ROOT6=/gvis/nari/nariDocs/smb/*.html SRC_ROOT7=/nariDocs/smb/svm chmod -R 777 /nari/nariDocs/smb/svm BACKUP_ROOT=/gvis/nari/nariDocs/configBackup/01_gcp-gvis-dkLinux LOG_FILE=/gvis/log/001_sysBackup.log echo "-------Backup Start----" `date +%F_%T_`>> ${LOG_FILE} /usr/bin/docker exec docker-sv_mariadb1011-1 /bin/sh /etc/mysql/conf.d/nari/901_nariDB_1st_DDLout.sh cp -p /gvis/nari/nariDocs/Docker/nariDockerDat/sv_mariadb11conf/nari/DDLdefine.txt /gvis/nari/nariDocs/smb/svm/Public/999_その他/ docker images -f dangling=true -q | xargs docker rmi docker volume ls -qf dangling=true | xargs docker volume rm /bin/sh /gvis/script/301_dockerStop.sh rm -f /gvis/nari/nariDocs/Docker/nariDockerDat/cl_ubun18/backup/*.zip rsync -av --delete --exclude='nariDockerSys/' \ --exclude 'nariDockerDat/cl_ubun18/download/gvis/' \ --exclude 'nariDockerDat/cl_ubun18/download/wk_apl/_old' \ --exclude 'nariDockerDat/cl_ubun18/download/wk_memos/_old' \ --exclude 'nariDockerDat/sv_gitlab2023/' \ --exclude 'nariDockerDat/sv_gitlab2024/' \ ${SRC_ROOT}${SRC_ROOT1}/ ${BACKUP_ROOT}/Docker >> ${LOG_FILE} rm -fR ${BACKUP_ROOT}/log rm -fR ${BACKUP_ROOT}/script rm -fR ${BACKUP_ROOT}/gvis_conf cp -pR ${SRC_ROOT2} ${BACKUP_ROOT}/ cp -pR ${SRC_ROOT3} ${BACKUP_ROOT}/ cp -pR ${SRC_ROOT4} ${BACKUP_ROOT}/ rm -f ${BACKUP_ROOT}/nariDocs/smb/*.html rm -fR ${BACKUP_ROOT}/nariDocs/smb/common cp -pR ${SRC_ROOT5} ${BACKUP_ROOT}/nariDocs/smb/ cp -p ${SRC_ROOT6} ${BACKUP_ROOT}/nariDocs/smb/ rsync -av --delete --exclude='.git/' \ ${SRC_ROOT}${SRC_ROOT7}/ ${BACKUP_ROOT}${SRC_ROOT7} >> ${LOG_FILE} /bin/sh /gvis/script/302_dockerStart.sh /bin/sh /gvis/nari/nariDocs/Docker/dockerStart.sh echo "-------After Backup Docker Start------" `date +%F_%T_`>> ${LOG_FILE} /bin/sh /gvis/script/002_makeTar.sh $1 echo "-------Backup End------" `date +%F_%T_`>> ${LOG_FILE} chown -R nari:nari ${BACKUP_ROOT} /bin/sh /gvis/script/gdr-gavannitsales/003_SyncGavannitsales.sh exit 主な内容。 ...

Dockerでmariadbバージョンアップ(詳細編5-google driveからlocal-linuxへ永続化領域をコピーして利用)

概要編から参照されるための詳細編5。 google driveからlocal-linuxへ永続化領域をコピーして利用 google driveにあるDocker.zipの中からmariadbの永続化領域だけを展開して、mariadb10.11に使わせる。 google driveからlocal-linuxへのコピーは自動じゃなく手動。 サイズとか日付とか、ダウンロードの様子見ながらやりたいから。 gcpで入れたのをcyberduckでダウンロード。 さて、ここからlocal-linuxの永続化領域へコピーし、データベース上の開発領域nariDB_Djangoを上書きする。 手動でダウンロードしたもの 置き場は決まってる。 1 2 3 4 5 6 7 8 9 10 11 $ ll 合計 8.7G drwxrwxr-x 2 nari nari 4.0K 2023-01-04 06:46:13 ./ drwxrwxr-x 14 nari nari 4.0K 2022-11-21 05:55:07 ../ -rwxr--r-- 1 nari nari 3.2G 2023-03-18 08:24:07 Docker.zip* -rwxr--r-- 1 nari nari 21M 2023-03-18 08:18:32 gvis_conf.zip* -rwxr--r-- 1 nari nari 1.4M 2023-03-18 08:18:32 log.zip* -rwxr--r-- 1 nari nari 5.5G 2023-03-18 08:28:35 nariDocs.zip* -rwxr--r-- 1 nari nari 15M 2023-03-18 08:18:33 script.zip* nari@nafslinux-ubu22:/nari/nariHTTP/configBackup/ $ unzipして必要なものだけを切り出す windows環境からlocal-linuxの操作やってるので、デスクトップにショートカット作ってバッチ処理経由で展開処理を動かしてる。 ...

Dockerでubuntu22のリモートデスクトップ接続できるコンテナ

ubuntu20をubuntu22へ切り替えしてったんやけど、dockerコンテナのもやりたいなって思ったのでやってみた。 ubuntu22の親ホストで動くdockerコンテナとしてxrdpd稼働させて、リモートデスクトップ接続可能なubuntu22コンテナを作る。 その後、 ubuntu24 での稼働に切り替えた。 結論 dockerhubにあったxrdpコンテナのdockerfileをベースにして自分用に改造し、ubuntu22.04LTSにしたxrdpコンテナが起動できて、windowsから接続できるようになった。 macからもつないで使える(妄想)。 まずは、ビルドして起動した直後。 他にもdjangoやらldapsサーバやらredhat8/9クローンを動かしてる。 GUI含むので、dockerfile使ってビルドするのは20分ぐらい待つ。 ssd使うようにしても、それなりに時間はかかる。 リモートデスクトップ接続して、マウントした永続化領域を開いたとこ。 ubuntu22のJammy jellyfishってなってるし、右上の日付表示も日本語で、タイムゾーンもJSTになってる。 自分向けお決まりの入力をaliasに登録したところ。 source .bashrcってするか、ログインしなおしたらaliasが有効になる。 キーボードレイアウトを日本語にするため「設定マネージャー」を起動してみる。 GUIで見えてるポップアップツリーも、めっちゃ日本語表示してくれてる。 レイアウト変更は「japanese」って表記じゃなくて、いちばん下のほうにある「日本語」ってのを選ぶ。 これでレイアウトを「OADG109A」にして「Generic105-KEY PC」ってキーボード選ぶと「@」とか「:」が日本語レイアウトで使える(特にコロンが入力できないとvimでツライ)。 dockerコンテナの再起動したらlibreofficeの中でもちゃんと記号使えた。 コマンドラインで、パネルの日時表示設定とか日本語キーボード設定やらなあかんのかなぁって思ってたらスンナリ使えるようになった。 あとはベース機能を ubuntuで最初にaptした内容 を使ってvscodeとchrome入れたらこうなった。 これでdjangoのソースいじったり、ローカル環境で必要なときにテストできる。 ついでにlibre officeも最後に入れた。 docker-composeには、こう書いた。 dockerhubにあったxrdpコンテナを扱ってるサイトでベースになるものを引き当てて、ubuntu20で使ってる記述をベースに★箇所について改造して利用。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ### git clone https://github.com/danchitnis/container-xrdp.git ### cd container-xrdp ### ### docker build -f ./ubuntu-xfce/Dockerfile -t ubu:22gvis . ### docker run -it -v /docker/nariDockerDat/cl_ubun22:/gvis -p 33389:3389 ubu:22gvis nari xxxxxxxx yes cl_ubu22: image: ubu:22gvis privileged: true ★お決まりの記述 hostname: clubu22 ports: - "33389:3389" ★windowsからは33389ポートで接続させる volumes: - ./nariDockerDat/cl_ubun22:/gvis ★永続化領域をつないで使う tty: true shm_size: 512m ★この記述がないとchromeでページ表示の際にエラー出る depends_on: - "sv_ldap-admin" ★このコンテナより後に起動して欲しいので書いた ubuntu20の頃 yama07さんが作っておられてて、ubuntu20の頃はこれ使わせてもらってた。 ...

Dockerでubuntu22のリモートデスクトップ接続できるコンテナ(Dockerfile追記とマルチステージビルド)

dockerコンテナでxrdpするものをローカルlinuxとmacの中のminikubeとgoogle cloud(GCP)では日常的に使ってる。 GCPの中ではvscode使って、コンテナ稼働させてるgitlabにpythonソースとか、運用スクリプトとかを更新して保管してる。 普段はローカルのmacとwindowsのofficeあるから、GCPでexcelとかpdfとか確認するのはほんの少し。 そのためだけにwindowsの仮想マシン使うのはちょっとなぁ。 GCPの中でwindowsホストを使うと、ライセンス料とかいるから高めになる。 それやったらxrdpコンテナ使ってたほうがええ。 xrdpコンテナにはapt/apt-getしていろいろ入れたいから、全部やないけど30個ぐらいの 自分のメモ 見ながら設定してる。 dockerイメージ大きくなってほしくないけど、たぶん増えてく。 ときどきコンテナ作り直すことあるから、毎回の再設定が面倒になってきた。 ブラウザの表示色合い設定とか、デスクトップの壁紙設定とか手動でやらなアカンもんもあるけど、コンテナ作り直して全部手動でapt-getとかalias設定やるのは苦しいから、書いて設定できるものはdockerfileに追記した。 元のファイル 元のファイルはこんなの。 danchitnisさんのものを流用させてもらってる。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 # https://github.com/danchitnis/container-xrdp FROM ubuntu:22.04 ENV DEBIAN_FRONTEND noninteractive RUN apt-get -y update RUN apt-get -y upgrade RUN apt-get install -y \ xfce4 \ xfce4-clipman-plugin \ xfce4-cpugraph-plugin \ xfce4-netload-plugin \ xfce4-screenshooter \ xfce4-taskmanager \ xfce4-terminal \ xfce4-xkb-plugin RUN apt-get install -y \ sudo \ wget \ xorgxrdp \ xrdp \ tzdata \ ibus \ ibus-mozc \ language-pack-ja-base \ language-pack-ja \ fonts-noto-cjk \ fonts-noto-color-emoji && \ apt remove -y light-locker xscreensaver && \ apt autoremove -y && \ rm -rf /var/cache/apt /var/lib/apt/lists RUN locale-gen ja_JP.UTF-8 \ && echo 'LC_ALL=ja_JP.UTF-8' > /etc/default/locale \ && echo 'LANG=ja_JP.UTF-8' >> /etc/default/locale ENV LANG=ja_JP.UTF-8 \ LANGUAGE=ja_JP:ja \ LC_ALL=ja_JP.UTF-8 \ TZ=Asia/Tokyo RUN cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime \ && echo 'Asia/Tokyo' > /etc/timezone COPY ./build/ubuntu-run.sh /usr/bin/ RUN mv /usr/bin/ubuntu-run.sh /usr/bin/run.sh RUN chmod +x /usr/bin/run.sh # https://github.com/danielguerra69/ubuntu-xrdp/blob/master/Dockerfile RUN mkdir /var/run/dbus && \ cp /etc/X11/xrdp/xorg.conf /etc/X11 && \ sed -i "s/console/anybody/g" /etc/X11/Xwrapper.config && \ sed -i "s/xrdp\/xorg/xorg/g" /etc/xrdp/sesman.ini && \ echo "xfce4-session" >> /etc/skel/.Xsession # Docker config EXPOSE 3389 ENTRYPOINT ["/usr/bin/run.sh"] 追記した内容 dockerイメージのサイズは5GBぐらいまでなら、ええかと思ってる。 libreofficeとかvscode使うし。 ...

Dockerでubuntu24のリモートデスクトップ接続できるコンテナ

ubuntuが最近22から24になった。 ローカルlinuxを先に 22から24へバージョン上げた 。 xrdpコンテナも 自分のメモ 見ながらバージョン上げたる。 20から22にバージョン上げた時はdanchitnisさんのものを使わせてもらって、いい勉強になった。 さて今回はどうやろ。 compose.ymlを準備 ⭐️の箇所を22から24に変えたらええ。 永続化領域もcl_ubun22からコピーして用意しとく。 1 2 3 4 5 6 7 8 9 10 cl_ubu24gvis: ⭐️ image: gvis-ubu24:24gvis ⭐️ privileged: true hostname: clubu24 ⭐️ ports: - "33389:3389" volumes: - ./nariDockerDat/cl_ubun24:/gvis ⭐️ tty: true shm_size: 512m Dockerfileを用意 dockerhubのubuntuの公開具合を見て24.04のタグがあることを確認しとく。 ...