docker - eiichiromomma/CVMLAB GitHub Wiki
docker
WindowsのLinux環境の側面だけならWSLも便利だが,コンテナは使えた方が何かと便利
トピック
- Docker CEでDeep Learning環境の構築(Ubuntu) 新しいDockerでGPUも使う方法
- PCLでのDockerによる環境構築 (ほぼここの内容を分離しただけ)
起動時の注意
-pオプション
macOSだとコンテナ内でsshdを起動してもホスト側からログインできない。(Linuxはできる) あらかじめポート転送の設定 -p 2022:22 (外向けport 2022コンテナport 22)が必要。これを忘れるとX転送が使えない。
glxがどうにもならない対策としては-p 5901:5901を指定してVNC接続する方法もある。
CPUとメモリ制限(macOS)
メニューに表示されるアイコンからPreferencesを選び,AdvancedでCPUとメモリを確保する必要がある。デフォルトだとCPU2個,メモリ2GBなのでビルドでコケる。 makeで-j指定する数はこのCPU数が限界。
--security-opt
とりあえずコンテナを作る際に --security-opt seccomp=unconfinedオプションを付けないとgdbが動かない(セキュリティレベルを下げることになるので他の用途に使わない)
起動例
docker for Ubuntuの場合
Ubuntuの場合、元ネタにあるようにX11のソケットを共有するのが手っ取り早い。
docker run -it --name ub_pcl --security-opt seccomp=unconfined -e DISPLAY=$DISPLAY -v/tmp/.X11-unix:/tmp/.X11-unix -v$HOME/dockermount:/mnt ubuntu /bin/bash
docker for macOSの場合
docker run -it --name ub_pcl --security-opt seccomp=unconfined -p 2022:22 -v$HOME/dockermount:/mnt ubuntu /bin/bash
nvidia-docker for Ubuntuの場合
nvidia-docker run -it --name ub_pcl --security-opt seccomp=unconfined -e DISPLAY=$DISPLAY -v/tmp/.X11-unix:/tmp/.X11-unix -v$HOME/dockermount:/mnt nvidia/cuda:8.0-devel /bin/bash