docker - eiichiromomma/CVMLAB GitHub Wiki

docker

WindowsのLinux環境の側面だけならWSLも便利だが,コンテナは使えた方が何かと便利

トピック

起動時の注意

-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