本日は
を参考に自分の環境でも再現したよ〜報告を書きます.Ubuntuさん基本的にターミナルベースでしか使わないので応用はとくに考えてないのですが・・・
環境
ホスト:macOS Catalina
Docker: Docker version 19.03.5, build 633a0ea
Dockerfile
FROM ubuntu:16.04
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y \
ubuntu-desktop \
samba-common-bin \
x11-apps \
sudo
ARG uid=1000
ARG gid=1000
RUN groupadd -g ${uid} developer && \
useradd -u ${gid} -g developer -G sudo -r developer && \
mkdir -p /home/developer/.config/nautilus &&\
chown ${uid}:${gid} -R /home/developer && \
mkdir -p /var/lib/samba/usershares
RUN echo 'Defaults visiblepw' >> /etc/sudoers
RUN echo 'developer ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
# set locale to initialize terminal property
RUN locale-gen en_US.UTF-8
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8
USER developer
WORKDIR /home/developer
使い方
下記のようなシェルスクリプトを作っておきます.
init.sh
docker build -t udesk .
xhost + 127.0.0.1
HOSTDISPLAY=host.docker.internal:0
docker run --rm -it\
-e DISPLAY=$HOSTDISPLAY \
-v /tmp/.X11-unix/:/tmp/.X11-unix \
--name udesk \
udesk /bin/bash -c "nautilus"
xhost - 127.0.0.1
あとは bash init.sh
でイメージのビルドから起動までできます.他のターミナルを開いておいて docker stop udesk
で止めることができます.--rm
オプションをつけてるので終わるとコンテナが消えてしまいます.ですので引き続き使いたい人は --rm
を取り除いてコンテナを再起動する感じでお願いします.
- 上の
init.sh
で書いているxhost +
/xhost -
のテクニックはDocker のコンテナで matplotlib の描画結果を表示させたいな場合にも応用が効きますね. - Linux がホストの場合は
xhost + local:docker
/xhost - local:docker
とかHOSTDISPLAY=$DISPLAY
としておくとうまくいくはずです.
References
- Dockerを導入してGUI操作可能なLinux(Ubuntu)コンテナを作成する
- https://marsee101.blog.fc2.com/blog-entry-4438.html
- https://askubuntu.com/questions/798928/nautilus-share-message-called-net-usershare-info-but-it-failed
- Docker: コンテナのlocaleを設定したい
- https://medium.com/@mreichelt/how-to-show-x11-windows-within-docker-on-mac-50759f4b6
References for those who would like to try with XForwarding
- https://unix.stackexchange.com/questions/12755/how-to-forward-x-over-ssh-to-run-graphics-applications-remotely
- https://blog.amedama.jp/entry/docker-container-x11-forwarding
- http://fabiorehm.com/blog/2014/09/11/running-gui-apps-with-docker/
- https://unix.stackexchange.com/questions/108679/x-client-forwarded-over-ssh-cannot-open-display-localhost11-0
- sshのX11Forwadingがうまく動作しない