ubuntuが最近22から24になった。
ローカルlinuxを先に22から24へバージョン上げた。
xrdpコンテナも自分のメモ見ながらバージョン上げたる。
20から22にバージョン上げた時はdanchitnisさんのものを使わせてもらって、いい勉強になった。
さて今回はどうやろ。
compose.ymlを準備
⭐️の箇所を22から24に変えたらええ。
永続化領域もcl_ubun22からコピーして用意しとく。
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のタグがあることを確認しとく。
自分が見た時はrollingってタグのdigestがc279a739b31e
って入ってた。
digestを検索すると、nobleとlatestと24.04のタグにも同じのがついてる。
今はこれでええんやけど、24.10ってとこのタグがnoneってdigestになって書いてある。
もうすぐ24.10出るってことか?
noneじゃdocker pull
して使えんから、24.04指定してdockerfile用意しよか。
# https://github.com/danchitnis/container-xrdp
FROM ubuntu:24.04 AS ububase
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 \
dbus-x11 ⭐️足しとかんとコンテナ実行時にdbusエラー出る
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
##############
## For gvis
##############
RUN apt-get -y update
RUN apt-get -y upgrade
RUN apt-get install -y \
fonts-ipafont \
git \
curl \
featherpad \
gvfs-backends \
nmon \
vim \
dnsutils \
iputils-ping \
net-tools \
iproute2 \
mysql-client \
libreoffice \
libreoffice-l10n-ja \
libreoffice-dmaths \
libreoffice-ogltrans \
libreoffice-writer2xhtml \
libreoffice-pdfimport \
libreoffice-help-ja \
evince \
file-roller \
ristretto \
software-properties-common \
gnome-calculator && \
apt autoremove -y && \
rm -rf /var/cache/apt /var/lib/apt/lists
RUN curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
RUN install -o root -g root -m 644 microsoft.gpg /etc/apt/trusted.gpg.d/
RUN /usr/bin/sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main" > /etc/apt/sources.list.d/vscode.list'
RUN apt install apt-transport-https
RUN apt update
RUN apt install code
RUN apt remove snap
## RUN apt-get install software-properties-common
RUN add-apt-repository ppa:mozillateam/ppa
RUN echo "Package: firefox*" > /etc/apt/preferences.d/mozillateamppa
RUN echo "Pin: release o=LP-PPA-mozillateam" >> /etc/apt/preferences.d/mozillateamppa
RUN echo "Pin-Priority: 1001" >> /etc/apt/preferences.d/mozillateamppa
RUN apt-get -y update
RUN apt-get -y upgrade
RUN apt install firefox xul-ext-ubufox
## RUN curl https://dl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
## RUN echo 'deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main' | sudo tee /etc/apt/sources.list.d/google-chrome.list
## RUN apt-get -y update
## RUN apt-get -y upgrade
## RUN apt install google-chrome-stable libu2f-udev
# 配下の.DS_Storeと._xxx を削除
RUN echo "function removegomi () {" >> /root/.bashrc
RUN echo " find . \( -name '.DS_Store' -or -name '._*' \) -delete -print;" >> /root/.bashrc
RUN echo "}" >> /root/.bashrc
RUN echo "alias rmgomi=removegomi" >> /root/.bashrc
RUN echo "alias sc='cd /gvis/script'" >> /root/.bashrc
RUN echo "alias tree=\"pwd;find . | sort | sed '1d;s/^\.//;s/\/\([^/]*\)$/|--/;s/\/[^/|]*/| /g'" \" >> /root/.bashrc
RUN echo "alias dff='df -h | grep -v DockerSys | grep -v "dev/loop"' " >> /root/.bashrc
RUN echo "PATH=/gvis/script/proc:$PATH:$HOME/bin" >> /root/.bashrc
RUN echo "export PATH" >> /root/.bashrc
RUN userdel -r `cat /etc/passwd | grep 1000 | awk -F':' '{print $1}'`
RUN useradd -m -s /usr/bin/bash -u 1000 nari ⭐️なんでかuid=1000はubuntuって名前の一般ユーザがあったので削除してから作成
RUN sudo su - nari
# 配下の.DS_Storeと._xxx を削除
RUN echo "function removegomi () {" >> /home/nari/.bashrc
RUN echo " find . \( -name '.DS_Store' -or -name '._*' \) -delete -print;" >> /home/nari/.bashrc
RUN echo "}" >> /home/nari/.bashrc
RUN echo "alias rmgomi=removegomi" >> /home/nari/.bashrc
RUN echo "alias sc='cd /gvis/script'" >> /home/nari/.bashrc
RUN echo "alias tree=\"pwd;find . | sort | sed '1d;s/^\.//;s/\/\([^/]*\)$/|--/;s/\/[^/|]*/| /g'" \" >> /home/nari/.bashrc
RUN echo "alias dff='df -h | grep -v DockerSys | grep -v "dev/loop"' " >> /home/nari/.bashrc
RUN echo "PATH=/gvis/script/proc:$PATH:$HOME/bin" >> /home/nari/.bashrc
RUN echo "export PATH" >> /home/nari/.bashrc
FROM ububase
# Docker config
EXPOSE 3389
ENTRYPOINT ["/usr/bin/run.sh"]
dbus関連のモジュールがないとrdpした直後にエラー出てまうのと、uid=1000が使われてしもてたのを潰して自分のidに変えた。
こうしとかな永続化領域のパーミッションについてるuid変えなアカンようになる。
chromeのインストールはgoogle cloudのxrdpの中だけで使うからローカルのコンテナではコメント化。
ビルド実行
ビルド時間かかるねんなぁ。
ビルドのやり方
githubから公開元のdockerコンテナ材料を取ってきてビルドする。
だいたいのコンテナはdocker compose
使う方法書いてへんからアレンジせなあかんのは今も変わらず。
cd /docker/nariDockerDat/cl_ubun24/download
git clone https://github.com/danchitnis/container-xrdp.git
cd container-xrdp
vi ./ubuntu-xfce/Dockerfile-gvis.txt ⭐️さっき用意したDockerfileを貼り付ける
docker build -f ./ubuntu-xfce/Dockerfile-gvis.txt -t ubu:24gvis .
ビルド結果
何回かビルドでエラーになったけど、廃れたモジュールは記述から外して必要そうなのを書き足した。
最終的にdocker system prune
して実行したビルド。
300秒ぐらいで終わることもあったけど、イメージ置き場にキャッシュが残ってるからかな。
何度かやりなおして10分ぐらいかかった。
nari@nafslinux-ubu24:/docker/nariDockerDat/cl_ubun24/download/container-xrdp$ docker build -f ./ubuntu-xfce/Dockerfile-gvis.txt -t ubu:24gvis .
[+] Building 588.1s (53/53) FINISHED docker:default
=> [internal] load build definition from Dockerfile-gvis.txt 0.0s
=> => transferring dockerfile: 5.13kB 0.0s
=> [internal] load metadata for docker.io/library/ubuntu:24.04 2.2s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [internal] load build context 0.0s
=> => transferring context: 1.73kB 0.0s
=> [ububase 1/48] FROM docker.io/library/ubuntu:24.04@sha256:e3f92abc0967a6c19d0dfa2d558388 1.6s
=> [ububase 2/48] RUN apt-get -y update 5.0s
=> [ububase 3/48] RUN apt-get -y upgrade 3.1s
=> [ububase 4/48] RUN apt-get install -y xfce4 xfce4-clipman-plugin xfce4-cpu 153.2s
=> [ububase 5/48] RUN apt-get install -y sudo wget xorgxrdp xrdp tzdat 21.3s
=> [ububase 6/48] RUN locale-gen ja_JP.UTF-8 && echo 'LC_ALL=ja_JP.UTF-8' > /etc/defaul 0.8s
=> [ububase 7/48] RUN cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime && echo 'Asia/To 0.3s
=> [ububase 8/48] COPY ./build/ubuntu-run.sh /usr/bin/ 0.0s
=> [ububase 9/48] RUN mv /usr/bin/ubuntu-run.sh /usr/bin/run.sh 0.2s
=> [ububase 10/48] RUN chmod +x /usr/bin/run.sh 0.3s
=> [ububase 11/48] RUN mkdir -p /var/run/dbus && cp /etc/X11/xrdp/xorg.conf /etc/X11 && 0.3s
=> [ububase 12/48] RUN apt-get -y update 5.0s
=> [ububase 13/48] RUN apt-get -y upgrade 1.3s
=> [ububase 14/48] RUN apt-get install -y fonts-ipafont git curl featherpad 67.0s
=> [ububase 15/48] RUN curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmo 0.3s
=> [ububase 16/48] RUN install -o root -g root -m 644 microsoft.gpg /etc/apt/trusted.gpg.d/ 0.4s
=> [ububase 17/48] RUN /usr/bin/sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com 0.3s
=> [ububase 18/48] RUN apt install apt-transport-https 0.3s
=> [ububase 19/48] RUN apt update 118.0s
=> [ububase 20/48] RUN apt install code 6.0s
=> [ububase 21/48] RUN apt remove snap 1.1s
=> [ububase 22/48] RUN add-apt-repository ppa:mozillateam/ppa 7.0s
=> [ububase 23/48] RUN echo "Package: firefox*" > /etc/apt/preferences.d/mo 0.2s
=> [ububase 24/48] RUN echo "Pin: release o=LP-PPA-mozillateam" >> /etc/apt/preferences.d/mo 0.3s
=> [ububase 25/48] RUN echo "Pin-Priority: 1001" >> /etc/apt/preferences.d/mo 0.2s
=> [ububase 26/48] RUN apt-get -y update 1.9s
=> [ububase 27/48] RUN apt-get -y upgrade 1.2s
=> [ububase 28/48] RUN apt install firefox xul-ext-ubufox 176.0s
=> [ububase 29/48] RUN echo "function removegomi () {" >> /root/.bashrc 0.2s
=> [ububase 30/48] RUN echo " find . \( -name '.DS_Store' -or -name '._*' \) -delete -print 0.2s
=> [ububase 31/48] RUN echo "}" >> /root/.bashrc 0.2s
=> [ububase 32/48] RUN echo "alias rmgomi=removegomi" >> /root/.bashrc 0.3s
=> [ububase 33/48] RUN echo "alias sc='cd /gvis/script'" >> /root/.bashrc 0.3s
=> [ububase 34/48] RUN echo "alias tree="pwd;find . | sort | sed '1d;s/^\.//;s/\/\([^/]*\)$/ 0.2s
=> [ububase 35/48] RUN echo "alias dff='df -h | grep -v DockerSys | grep -v "dev/loop"' " 0.3s
=> [ububase 36/48] RUN echo "PATH=/gvis/script/proc:/usr/local/sbin:/usr/local/bin:/usr/sbin 0.3s
=> [ububase 37/48] RUN echo "export PATH" >> /root/.bashrc 0.2s
=> [ububase 38/48] RUN useradd -m -s /usr/bin/bash -u 1101 nari 0.3s
=> [ububase 39/48] RUN sudo su - nari 0.3s
=> [ububase 40/48] RUN echo "function removegomi () {" >> /home/nari/.bashrc 0.3s
=> [ububase 41/48] RUN echo " find . \( -name '.DS_Store' -or -name '._*' \) -delete -print 0.3s
=> [ububase 42/48] RUN echo "}" >> /home/nari/.bashrc 0.2s
=> [ububase 43/48] RUN echo "alias rmgomi=removegomi" >> /home/nari/.bashrc 0.3s
=> [ububase 44/48] RUN echo "alias sc='cd /gvis/script'" >> /home/nari/.bashrc 0.3s
=> [ububase 45/48] RUN echo "alias tree="pwd;find . | sort | sed '1d;s/^\.//;s/\/\([^/]*\)$/ 0.2s
=> [ububase 46/48] RUN echo "alias dff='df -h | grep -v DockerSys | grep -v "dev/loop"' " 0.3s
=> [ububase 47/48] RUN echo "PATH=/gvis/script/proc:/usr/local/sbin:/usr/local/bin:/usr/sbin 0.3s
=> [ububase 48/48] RUN echo "export PATH" >> /home/nari/.bashrc 0.3s
=> exporting to image 8.5s
=> => exporting layers 8.5s
=> => writing image sha256:fb376515817dbf1b07c98de365f767a8d6adf450e899e4fd591bf0f1833ae032 0.0s
=> => naming to docker.io/library/ubu:24gvis 0.0s
nari@nafslinux-ubu24:/docker/nariDockerDat/cl_ubun24/download/container-xrdp$
speedtest.netで800Mbpsぐらいの速度は出る状態でもこれぐらい。
イメージのサイズ確認してみる。
nari@nafslinux-ubu24:/docker$ docker images | egrep "22gvis|24gvis"
ubu 24gvis 829170c7ba35 3 minutes ago 4.26GB
ubu 22gvis 3314336c4a98 5 days ago 3.51GB
nari@nafslinux-ubu24:/docker$
22のときと比べたら700MBぐらいデカなっとる。
いらんもん入れてへんつもりなんやけどな。
使いながらダイエットしてこ。
ローカルlinuxのxrdpコンテナ
仮でコンテナ動かしてrdpログインしてからGUIで手動設定してく。
引数のパスワードは都度変える。
docker run -it -v /docker/nariDockerDat/cl_ubun24:/gvis -p 33389:3389 ubu:24gvis nari password yes
普通にrdp接続して開く。
xfceのネズミの壁紙見えて時計がJST、入力メソッドに日本語が使えたらうまいこといってる。
不足してるモジュールあってdbusでエラー出たり、ユーザidの1000がubuntuユーザとかになってて5回ぐらい作り直した。
ホンマの最初のxfce画面が表示できたときはやっぱり嬉しいもんよ。
ここではvscode設定とかsmb接続の認証情報を保存して、xfceの他の細かい設定もやっとく。
今まで記憶に頼ってときどき漏れがあったけどメモっとこ。
firefoxとかvscodeのインストールはdockerfileでやってるけど、GUI設定は手動でやらなアカン。
書いてみたら結構多いな。
- GUIの上パネルに見える時計を秒単位まで表示と、mozcへの切り替え、thunarのファイル表示を年月日時分秒に設定
- 母艦のubuntu24へsmb接続する認証情報の設定と、読み書きできること、パーミッション崩れがないことを確認
- xfceのシステムの設定でフォントをIPAゴシックに変更、キーボードを日本語配列にして(次にコンテナ起動したら有効になる)、壁紙設定と背景色を設定
- ターミナル内でdateって入れて日本語表示できてる確認と、alias設定でフォルダのツリー表示できる確認と、念のためaptの実行
- GUIの下パネルのほうにブラウザがあってfirefox起動できること、パネルに電卓/スクリーンショット/vscodeの追加
- firefoxをダークモードにしてフォントをIPAゴシックに変更し、母艦のapacheで公開しているURLをお気に入りに追加し、djangoページの認証情報を覚えさせる
- vscodeの起動オプションに
--no-sandbox
を足して.gitフォルダのあるフォルダを開いておき、プラグインにjapanese langpack/vscode-pdf/markdown pdf/gitgraph/git extensionを追加してからgitグラフ表示できるか確認 - テキストファイルをfeatherpadでダークモードで開く設定して、pdfがプレビューできる、xlsxファイルがlibreoofficeで開けることを確認
- google cloudのコンテナの場合はchrome起動してgmailとgoogle drive使えるように設定
ubuntu22のrdpにはスクリーンセーバとロック画面の設定あったけどubuntu24にはあらへん。
まぁええか。
GUIの設定は5分もかからず、やってみたらこうなる。
手動設定終わったらコミットしてイメージを置く。
dockerイメージはmacのminikubeに持ってって使うのよね。
そしたらGUIで手動設定した内容がkubernetesのpodで完全に同じ状態を維持して使えてまう。
docker commit `docker ps | grep 24gvis | awk '{print $NF}'` gvis-ubu24:24gvis
macのminikubeの中で動いているxrdpコンテナ
ローカルlinuxで動くコンテナの背景色をグレーにして動かしておいて、docker save
して作ったイメージをmacのminikubeに持ってきて、それをPodとして動かす。
なんかネットの速度遅いな。
別で調べるか。
結果
試行錯誤する箇所もあったけど、dockerの起動オプションで指定してる--data-root /docker/nariDockerSys
がdocker system prune
してもあんまり小さくならん。
コンテナとイメージを全部潰してみても完全には消えてくれん。
母艦のssdに置いたvmdkも100GB程度になってたから、/dockerのパーティションごと作り直した。
nari@nafslinux-ubu24:/docker$ sudo du -shc *
4.0K DB11backup.sh
509M DockerImages
0 DockerVol.txt
152K _tmp
12G backup
12K compose-ALL.yml
4.0K compose-current.yml
4.0K compose-current20240608.yml
4.0K compose.yml
4.0K djangoDB11backup.sh
4.0K djangoDB11restore.sh
52M docker-compose
4.0K docker.service.20210305.txt
4.0K docker.service.20230204.txt
4.0K dockerStart.sh
4.0K dockerStop.sh
13G nariDockerDat
42G nariDockerSys
67G 合計
nari@nafslinux-ubu24:/docker$
合計67GBってあるのに、vmdkは59.6GBってあるのはなんでや?