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のタグがあることを確認しとく。

自分が見た時はrollingってタグのdigestがc279a739b31eって入ってた。

digestを検索すると、nobleとlatestと24.04のタグにも同じのがついてる。

今はこれでええんやけど、24.10ってとこのタグがnoneってdigestになって書いてある。

もうすぐ24.10出るってことか?

noneじゃdocker pullして使えんから、24.04指定してdockerfile用意しよか。

  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
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
# 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/\/\([^/]*\)$/|--\1/;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/\/\([^/]*\)$/|--\1/;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使う方法書いてへんからアレンジせなあかんのは今も変わらず。

1
2
3
4
5
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分ぐらいかかった。

 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
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ぐらいの速度は出る状態でもこれぐらい。

イメージのサイズ確認してみる。

1
2
3
4
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、入力メソッドに日本語が使えたらうまいこといってる。

gvis-docker-ubu24xrdp

不足してるモジュールあってdbusでエラー出たり、ユーザidの1000がubuntuユーザとかになってて5回ぐらい作り直した。

ホンマの最初のxfce画面が表示できたときはやっぱり嬉しいもんよ。

ここではvscode設定とかsmb接続の認証情報を保存して、xfceの他の細かい設定もやっとく。

今まで記憶に頼ってときどき漏れがあったけどメモっとこ。

firefoxとかvscodeのインストールはdockerfileでやってるけど、GUI設定は手動でやらなアカン。

書いてみたら結構多いな。

  1. GUIの上パネルに見える時計を秒単位まで表示と、mozcへの切り替え、thunarのファイル表示を年月日時分秒に設定

  2. 母艦のubuntu24へsmb接続する認証情報の設定と、読み書きできること、パーミッション崩れがないことを確認

  3. xfceのシステムの設定でフォントをIPAゴシックに変更、キーボードを日本語配列にして(次にコンテナ起動したら有効になる)、壁紙設定と背景色を設定

  4. ターミナル内でdateって入れて日本語表示できてる確認と、alias設定でフォルダのツリー表示できる確認と、念のためaptの実行

  5. GUIの下パネルのほうにブラウザがあってfirefox起動できること、パネルに電卓/スクリーンショット/vscodeの追加

  6. firefoxをダークモードにしてフォントをIPAゴシックに変更し、母艦のapacheで公開しているURLをお気に入りに追加し、djangoページの認証情報を覚えさせる

  7. vscodeの起動オプションに--no-sandboxを足して.gitフォルダのあるフォルダを開いておき、プラグインにjapanese langpack/vscode-pdf/markdown pdf/gitgraph/git extensionを追加してからgitグラフ表示できるか確認

  8. テキストファイルをfeatherpadでダークモードで開く設定して、pdfがプレビューできる、xlsxファイルがlibreoofficeで開けることを確認

  9. google cloudのコンテナの場合はchrome起動してgmailとgoogle drive使えるように設定

ubuntu22のrdpにはスクリーンセーバとロック画面の設定あったけどubuntu24にはあらへん。

まぁええか。

GUIの設定は5分もかからず、やってみたらこうなる。

gvis-docker-ubu24xrdp

手動設定終わったらコミットしてイメージを置く。

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として動かす。

gvis-docker-ubu22xrdp

なんかネットの速度遅いな。

別で調べるか。

結果

試行錯誤する箇所もあったけど、dockerの起動オプションで指定してる--data-root /docker/nariDockerSysdocker system pruneしてもあんまり小さくならん。

コンテナとイメージを全部潰してみても完全には消えてくれん。

母艦のssdに置いたvmdkも100GB程度になってたから、/dockerのパーティションごと作り直した。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
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ってあるのはなんでや?

gvis-docker-ubu22xrdp