LoginSignup
2
2

More than 3 years have passed since last update.

dockerでGUIアプリ起動可能な環境構築 [クライアント <--> リモートサーバ <--> dockerコンテナ]

Last updated at Posted at 2019-10-18

リモートサーバ接続

ssh [user name]@[server name] -X
  • [user name] --> ユーザ名がリモートサーバーとホスト間で同じなら省略可

Dockerfileの作成

適当なテキストエディタで Dockerfile という名前のファイルを作成してください(拡張子なし)

Dockerfile
FROM [docker image name(base)]:[Tag(base)]

RUN apt-get update && \
    apt-get install -y sudo && \
    apt-get install -y x11-apps && \
    apt-get install -y geeqie && \
    apt-get install -y git

RUN groupadd -g [gid(local)] [group name] && \
    useradd  -u [uid(local)] -g [group name] -G sudo -m -s /bin/bash [user name(in docker)] && \
    echo '[user name(in docker)]:[password]' | chpasswd

RUN echo 'Defaults visiblepw'             >> /etc/sudoers
RUN echo '[user name(in docker)] ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers

ENV USER=[user name(in docker)]
ENV QT_X11_NO_MITSHM=1

  • [docker image name(base)]:[Tag(base)] --> honghu/keras:mx-cu10.0-dnn7.4-py3-19.01

  • [uid(local)], [gid(local)]

$id
uid=2036(hoge) gid=1000(hoge_group),...
  • [group name] --> developer
  • [user name(in docker)] --> hoge

docker imageの作成

# Dockerfileのあるディレクトリで実行
docker build ./ -t [docker image name]:[Tag]
  • [docker image name]:[Tag] --> hoge/keras:latest

docker containerの起動

nvidia-docker run \
-it \
--name [docker container name] \
--net host \
--shm-size=[memory size] \
-u $(id -u $USER):$(id -g $USER) \
-w [start directory] \
-e DISPLAY=$DISPLAY \
-v [local directory]:[docker directory] \
-v /tmp/.X11-unix/:/tmp/.X11-unix/ \
-v $HOME/.Xauthority:/home/[user name]/.Xauthority \
[docker image name]:[Tag] /bin/bash
  • [docker container name] --> hoge_keras
  • [memory size] --> 10gb
  • [start directory] --> /home/hoge/study
  • [local directory]:[docker directory] --> /home/hoge:/home/hoge/study
  • [docker image name]:[Tag] --> hoge/keras:latest
  • [user name] --> hoge

local と docker container 間の通信を許可

# localで実行
xhost +local:`docker inspect --format='{{ .Config.Hostname }}' [docker container ID or name]`
  • [docker container ID or name] --> hoge_keras

GUIアプリを起動しても表示できない場合

環境変数 DISPLAY の確認,変更
localとdockerで環境変数DIPSLAYを一致させる

# localで実行
$echo $DISPLAY
localhost:10.0

# dockerで実行
$echo $DISPLAY
:1
$export DISPLAY=localhost:10.0

参考記事

https://qiita.com/iganari/items/1d590e358a029a1776d6

https://unskilled.site/docker%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A%E3%81%AE%E4%B8%AD%E3%81%A7gui%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E8%B5%B7%E5%8B%95%E3%81%95%E3%81%9B%E3%82%8B/

https://qiita.com/aoksh/items/1a386ee87594e67784c4

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2