リモートサーバ接続
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