0
0

docker run のシェルスクリプトを他人の環境でも動くようにする

Last updated at Posted at 2024-07-19

docker run のシェルスクリプトを他人の環境でも動くようにする
ディレクトリのマウントの記述の改善に関するメモです。

前提

docker環境で、host環境のディレクトリをguest環境にマウントすることがある。
docker run のoptionで
-v /home/someone/folder/datasets:/root/project/datasets \
などと記述する。
機械学習系のモデルファイル・機械学習の学習用データ・推論用データはディスクスペースを大量消費するのでDockerfile 中で COPYをすることは避けます。

課題

/home/someone/folder/datasets という記述は、
そのリポジトリをgit clone した人にとっては違ってくる。
そのため、事前にdocker runを実行するシェルスクリプトを事前に編集してもらう必要を生じる
そのような必要のないシェルスクリプトを記載したい。
host環境のディレクトリを絶対pathで指定することを避けたい。

対策

以下のようにすることで、シェルスクリプト中でhost環境のディレクトリを絶対pathを書くことをなくせる。

#!/bin/bash
export GIT_ROOT=$(cd $(dirname $0)/.. ; pwd)
sudo docker run -it --rm --net=host --runtime nvidia -e DISPLAY=$DISPLAY \
	-v ${GIT_ROOT}/repo_name/weights:/root/repo_name/weights \
	--device /dev/bus/usb \
	--device /dev/video0:/dev/video0:mwr \
	-v /tmp/.X11-unix/:/tmp/.X11-unix repo_tag:100

効果

docker runを実行するスクリプトを事前に編集してくださいという作業なしに
そのスクリプトを実行できるようになった。

0
0
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
0
0