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

ubuntu24母艦のrdp接続 - xrdpやなくてgnomeの設定と.rdpファイル

ubuntu24使いはじめのとき、リモートデスクトップ接続で内部エラーってなってた。 dockerコンテナでxrdpコンテナはホイホイ動いたけど、母艦にrdpできてへんかったなって思い出した。 今回はwindows/macから接続できるようにしてみる。 接続結果 windowsからやとこうなる。 ただし、警告が出る。 これを解決せんとmacosからはつなげられへん。 解決させて、macosから接続するとこうなる。 ほな、解決の経緯こっから下な。 アプローチ ubuntu24へのリモートデスクトップを真面目にやると、いくつもヒットする。 作者さんありがとう。 How to Install Remote Desktop (Xrdp) on Ubuntu 24.04 - Linux Genie linuxgenie.net Ubuntu 24.04 LTS : Xrdp サーバーの設定 : Server World www.server-world.info 自分はdockerコンテナで使ってるxfce使いたいなって思ったから、1つ目のリンクでやりかけた。 1 2 # sudo apt install xfce4 xfce4-goodies # sudo apt install xrdp せやけど、途中でsystemctlでステータス確認したらエラーが出てきた。 1 2 3 4 7月 21 03:05:31 nafslinux-ubu24 xrdp[27860]: [ERROR] g_tcp_bind(7, 3389) failed bind IPv6 (errno=98) and IPv4 (errno=22). 7月 21 03:05:31 nafslinux-ubu24 xrdp[27860]: [ERROR] trans_listen_address failed 7月 21 03:05:31 nafslinux-ubu24 xrdp[27860]: [CORE ] Failed to start xrdp daemon, possibly address already in use. 7月 21 03:05:31 nafslinux-ubu24 systemd[1]: xrdp.service: Control process exited, code=exited, status=1/FAILURE なんやねん、already in useってあるやんけ。 先にどっかのプロセスが使ってるってどういうことやねん。 ...

ubuntu24を利用開始(google cloud分)

ローカルlinuxをubuntu24にバージョン上げて様子見しながら、google cloudのも準備。 Google cloudのubuntu ちゃんとubuntu24LTSのイメージもgoogle cloudにあった。 intel系のだけやなくarmもあんねんな。 macosとかwindowsとか出始めは「バグ多いから出始めは使ったらアカン」みたいな人多いけど、ベータ版とか極端な危険の懸念とかないかぎり、必要機能が使えるって判断したらすぐ利用開始に着手するで。 linuxでもwindowsでもOSは新規インストール一択。 パーティション新規作成して入れる。 windows98もwindows11でもアップグレードしてインストールしたらうまくいかんこと多かったな。 今はvmあるんやから、新規でvm作ってデータパーティションだけマウントしたらええ。 新OSを準備 「noble numbat」って名前長い。 端的に「numbat」でええ。 nobleの意味は「高貴で尊い」ってなってて、あんまり好かん。 フクロアリクイの絵柄が王冠みたいになってた壁紙とかイヤやなぁ。 ubuntu22はjelly-fslinuxってつけて作ってた から、24はnumbat-fslinuxってつける。 やることは前と同じ。 google cloudのコンソールで、まずは外部IPと内部IPを準備・特定しとく。 次にネットワーキングにファイアウォールのタグつけて、ネットワークとサブネットワークの設定つけたら鍵ファイル作って設定。 1回作っておさらいしながらやっておいて潰す。 2回目に点検しながら作ってまう。 teraterm接続できてssh転送が終わってdocker入れる直前まで、E2シリーズのマシンタイプにしとこ。 uid=1000のユーザ名を変更 今更なんやけど、osインストールしたらユーザidが1000としてubuntuって名前のユーザが元からある。 以下、赤い背景がubuntu22(jammy jellyfish)で水色のがubuntu24(noble numbat)。 ローカルlinuxのubuntu24は、centosの頃から使ってるファイル類があるから、uid=1000は自分のユーザでないと困んねん。 特にgoogle cloudでファイル維持してるものをローカルlinuxに持ってきたとき、uidが変わってたらgit管理してるファイルがいっつも全更新みたいな感じになる。 一時的に別ユーザ作っておいて、ubuntuユーザを削除して作り直してく。 ユーザidの操作メモを書いてくれてる人がいた。ロックする方法もあった。 作者さんありがとう。 Linuxコマンド - ユーザ・グループの確認/追加/削除 #ユーザー管理 - Qiita qiita.com Linuxでユーザアカウントを無効化するエトセトラ - astamuse Lab lab.astamuse.co.jp 変更する方法ってのもあるのね。 UID と GID の変更 - プレイヤーズ・ハイ i97506051502.hatenablog.com 作り直した結果はこうなった。 1 2 3 4 naritomitsukasa@gcp-numbat-fslinux:~$ cat /etc/passwd | grep nari naritomitsukasa:x:1101:1101::/home/naritomitsukasa:/bin/bash nari:x:1000:1000::/home/nari:/bin/bash naritomitsukasa@gcp-numbat-fslinux:~$ ログインしといたまま、次に実施するssh鍵作った後で$HOME/.ssh/authorized_keysに最終的に作った鍵ファイルの内容を入れてく。 ...

 ⭐️