2025/11/23

DockerでGUI付きのコンテナ立てたい!

というわけで、以下のようなDockerfileを書くと、VNCでアクセスできるようになります。RDPを最初に試しましたが、Rootless dockerでは動かせませんでした。

apt-getでインストールしているパッケージは、人によっては不要なものも混じっているので、必要に応じて編集します。

FROM ubuntu:24.04

RUN apt-get update && apt-get install -y \
    xfce4 xfce4-goodies \
    xfce4-terminal \
    dbus-x11 \
    wget \
    net-tools \
    locales \
    tzdata \
    ibus \
    ibus-mozc \
    language-pack-ja-base \
    language-pack-ja \
    fonts-noto-cjk \
    fonts-noto-color-emoji \
    nano \
    firefox \
    tigervnc-standalone-server tigervnc-common \
    x11-xserver-utils \
    && rm -rf /var/lib/apt/lists/*

RUN locale-gen ja_JP.UTF-8
ENV LANG=ja_JP.UTF-8
ENV LANGUAGE=ja_JP:ja
ENV LC_ALL=ja_JP.UTF-8
RUN cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime \
    && echo 'Asia/Tokyo' > /etc/timezone

# VNC
EXPOSE 5901

# Set up VNC
USER ubuntu
RUN mkdir -p /home/ubuntu/.vnc && \
    echo "[ここにVNCの接続パスワードを記入]" | vncpasswd -f > /home/ubuntu/.vnc/passwd && \
    chmod 600 /home/ubuntu/.vnc/passwd && \
    bash -c "( \
    echo '#!/bin/bash' && \
    echo unset SESSION_MANAGER && \
    echo unset DBUS_SESSION_BUS_ADDRESS && \
    echo xrdb /home/ubuntu/.Xresources && \
    echo export GTK_IM_MODULE=ibus && \
    echo export QT_IM_MODULE=ibus && \
    echo export XMODIFIERS=@im=ibus && \
    echo dbus-launch --exit-with-session ibus-daemon --xim --daemonize && \
    echo exec startxfce4 ) > /home/ubuntu/.vnc/xstartup && \
    chmod +x /home/ubuntu/.vnc/xstartup"

CMD ["vncserver", "-localhost", "no", "-fg", "-geometry", "1600x900", "-depth", "24", ":1"]
次に
docker build -t ubuntu24-gui .
のようにしてビルドします。

できあがったら、

docker run -p 5901:5901 ubuntu24-gui
で実行します。

これで接続できるようになっているので、VNCのクライアントを使うと接続できます。

Remminaを使う場合は、ユーザー名をubuntuに、ユーザーパスワードをDockerfileに書いたVNCのパスワードにすると接続できます。

ローカルホストからのみアクセスできるようにするのであれば

docker run -p 127.0.0.1:5901:5901 ubuntu24-gui
で実行します。

また、ローカルホストのみに限定した上で、sshトンネルでアクセスするにはRemminaのSSHトンネルの設定をします。

「ループバックアドレス経由のトンネル」にチェックを入れて、SSHの認証情報を設定すれば接続できます。

0 件のコメント :