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

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

logrotateの設定

ログファイルって勝手に膨れる。 /varとか別パーティションにしてるとき、dfで占有量のパーセンテージの数字の大きさに気づいて「デカなったなぁ」ってなることもある。 ある程度のサイズになったりとか、日付単位でログ残しときたいとか考えることもある。 sambaとかapacheとかapt/dnfしたときに設定が勝手に入ってくれるけど、バックアップのログとか自分用のログがあるときは自分でコントロールする必要がある。 OSを切り替えるときに設定はいつも継ぎ足しているので、1回作ったらもうほとんど触らない。 そもそもlogrotateとは 説明してくれてる方がおられる。 作者さんありがとう。 【logrotate】の仕組みと書き方, オプション一覧, 設定反映と再起動について | SEの道標 milestone-of-se.nesuke.com 最近だと、qiitaでも読みやすく書いてある。 logrotate入門 #Linux - Qiita qiita.com ログの維持結果 自分用の処理で維持するログは/gvis/logに出力してる。 ここが膨れないようコントロールするとこうなる。 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 $ cd /gvis/log $ ll 合計 87M drwxrwxr-x 2 nari nari 4.0K 2022-08-30 05:30:10 ./ drwxr-xr-x 8 nari nari 4.0K 2022-06-15 06:47:50 ../ -rw-r--r-- 1 nari nari 571 2022-08-30 04:23:10 000_serviceStart.log -rw-rw-r-- 1 nari nari 15M 2022-08-29 08:42:55 001_sysBackup.log -rw-rw-r-- 1 nari nari 4.7M 2022-08-26 08:44:12 001_sysBackup.log.1.gz -rw-rw-r-- 1 nari nari 4.7M 2022-08-19 08:43:35 001_sysBackup.log.2.gz -rw-rw-r-- 1 nari nari 4.7M 2022-08-12 08:39:21 001_sysBackup.log.3.gz -rw-rw-r-- 1 nari nari 4.6M 2022-08-05 08:37:06 001_sysBackup.log.4.gz -rw-rw-r-- 1 nari nari 4.6M 2022-07-29 08:37:26 001_sysBackup.log.5.gz -rw-rw-r-- 1 nari nari 2.8M 2022-07-22 08:36:46 001_sysBackup.log.6.gz -rw-rw-r-- 1 nari nari 4.6M 2022-07-15 08:36:34 001_sysBackup.log.7.gz -rw-rw-r-- 1 nari nari 4.6M 2022-07-08 08:38:03 001_sysBackup.log.8.gz -rw-rw-r-- 1 nari nari 2.8M 2022-07-01 08:38:26 001_sysBackup.log.9.gz -rw-rw-r-- 1 nari nari 0 2022-08-30 04:23:07 002_GVISbackup.log -rw-rw-r-- 1 nari nari 4.3M 2022-08-29 08:22:41 002_GVISbackup.log.1.gz -rw-rw-r-- 1 nari nari 4.2M 2022-08-24 08:23:57 002_GVISbackup.log.2.gz -rw-rw-r-- 1 nari nari 3.9M 2022-08-19 08:24:02 002_GVISbackup.log.3.gz -rw-rw-r-- 1 nari nari 3.9M 2022-08-16 08:21:03 002_GVISbackup.log.4.gz -rw-rw-r-- 1 nari nari 3.6M 2022-08-10 08:18:41 002_GVISbackup.log.5.gz -rw-rw-r-- 1 nari nari 3.6M 2022-08-04 08:19:03 002_GVISbackup.log.6.gz -rw-rw-r-- 1 nari nari 3.5M 2022-07-29 08:18:40 002_GVISbackup.log.7.gz -rw-rw-r-- 1 nari nari 3.7M 2022-07-25 08:18:13 002_GVISbackup.log.8.gz -rw-rw-r-- 1 nari nari 3.6M 2022-07-15 08:17:12 002_GVISbackup.log.9.gz -rw-rw-r-- 1 nari nari 1.2K 2022-08-29 08:02:04 003_gcpLog.log -rw-rw-r-- 1 nari nari 320 2022-08-26 08:02:10 003_gcpLog.log.1.gz -rw-rw-r-- 1 nari nari 404 2022-08-19 08:02:08 003_gcpLog.log.2.gz -rw-rw-r-- 1 nari nari 468 2022-08-12 08:02:25 003_gcpLog.log.3.gz -rw-rw-r-- 1 nari nari 450 2022-08-05 08:02:07 003_gcpLog.log.4.gz -rw-rw-r-- 1 nari nari 415 2022-07-29 08:02:05 003_gcpLog.log.5.gz -rw-rw-r-- 1 nari nari 346 2022-07-22 08:02:04 003_gcpLog.log.6.gz -rw-rw-r-- 1 nari nari 389 2022-07-15 08:02:02 003_gcpLog.log.7.gz -rw-rw-r-- 1 nari nari 397 2022-07-08 08:02:02 003_gcpLog.log.8.gz -rw-rw-r-- 1 nari nari 378 2022-07-01 08:01:58 003_gcpLog.log.9.gz -rw-rw-r-- 1 nari nari 174 2022-08-29 09:45:56 004_gdr.log -rw-rw-r-- 1 nari nari 209 2022-08-26 09:45:58 004_gdr.log.1.gz -rw-rw-r-- 1 nari nari 213 2022-08-19 09:45:46 004_gdr.log.2.gz -rw-rw-r-- 1 nari nari 246 2022-08-12 09:46:36 004_gdr.log.3.gz -rw-rw-r-- 1 nari nari 215 2022-08-05 09:47:05 004_gdr.log.4.gz -rw-rw-r-- 1 nari nari 245 2022-07-29 09:49:42 004_gdr.log.5.gz -rw-rw-r-- 1 nari nari 174 2022-07-22 09:46:53 004_gdr.log.6.gz -rw-rw-r-- 1 nari nari 216 2022-07-15 09:46:39 004_gdr.log.7.gz -rw-rw-r-- 1 nari nari 220 2022-07-08 09:45:31 004_gdr.log.8.gz -rw-rw-r-- 1 nari nari 192 2022-07-01 09:45:08 004_gdr.log.9.gz -rw-r--r-- 1 nari nari 9.0K 2022-08-30 04:23:11 100_samba.log -rw-r--r-- 1 nari nari 4.8K 2022-08-30 04:23:11 200_http.log -rw-r--r-- 1 nari nari 31K 2022-08-30 04:23:14 300_docker.log $ 000_serviceStart.logとかは、OS起動した後でデータディスクマウントしてからsamba/apache2/dockerの順番に起動してくときのログが出るようになってて、常に上書きしてるから膨れない。 ...

M4のmacでnginx稼働

ローカルコンテンツ参照用のhtmlの原本が、windowsホストのvmware内ubuntu24と、google cloudで稼働するubuntu24のapacheにそれぞれある。 コンテナ リンク DjangoStatus DjangoのバージョンやDB接続状態表示へ DjangoApp Djangoアプリのログイン画面へ DjangoAdmin Djangoアプリの管理画面へ 主に3種類のコンテナが、x86/arm64のdocker/kubernetesで動いてて、smb共有をapache公開してたりjupyterlabとかルータへのURLもある。 節電してM4のmacだけで動かす場面もあるから、mac側にnginx入れて、ローカルコンテンツ参照用のhtml使うことにした。 10年前のlinuxはapacheで使いはじめたけど、軽いから今はnginxやな。 UTMで動かしてる仮想ホストのmacの中やなくて、物理ホストのmac miniの中で準備してく。 nginxのインストール brew使えるんかなって探してみたら、解説してる方がおられた。 バージョンが1.17ってあるからちょっと古い。 作者さんありがとう。参考に読ませてもらいました。 Macでnginxをインストールして起動する - もちゅろぐ blog.mothule.com インストールやってみる。しもた、ログ捨ててた・・・。 brew install nginx brewでinfo確認すると、バージョンとか、使い方とか、設定ファイルの置き場の情報が見える。 2025年1月はバージョンが新しいめになってるからか、設定ファイルの場所が/usr/local/etc/nginx/nginx.confやなくなってる。 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 nari@narimac-mini ~ % brew info nginx ==> nginx: stable 1.27.3 (bottled), HEAD ⭐️バージョンは1.27なんやね HTTP(S) server and reverse proxy, and IMAP/POP3 proxy server https://nginx.org/ Installed /opt/homebrew/Cellar/nginx/1.27.3 (27 files, 2.5MB) * Poured from bottle using the formulae.brew.sh API on 2025-01-05 at 13:29:24 From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/n/nginx.rb License: BSD-2-Clause ==> Dependencies Required: openssl@3 ✔, pcre2 ✔ ==> Options --HEAD Install HEAD version ==> Caveats Docroot is: /opt/homebrew/var/www ⭐️ドキュメントルートはここなんや The default port has been set in /opt/homebrew/etc/nginx/nginx.conf to 8080 so that ⭐️このへんに設定ファイルあるらしい nginx can run without sudo. nginx will load all files in /opt/homebrew/etc/nginx/servers/. To restart nginx after an upgrade: brew services restart nginx ⭐️こうしたらサービス再起動できるんやな Or, if you don't want/need a background service you can just run: /opt/homebrew/opt/nginx/bin/nginx -g daemon\ off\; ==> Analytics install: 12,379 (30 days), 39,623 (90 days), 165,156 (365 days) install-on-request: 12,322 (30 days), 39,534 (90 days), 164,721 (365 days) build-error: 11 (30 days) nari@narimac-mini ~ % nginx設定ファイルの用意とサービス起動 設定ファイルはデフォルトのを.orgって名前で保管しといて、書きたいことだけ足す。ssiを有効にしてヘッダを読み込ませる。 ...