LoginSignup
2
0

More than 3 years have passed since last update.

docker メモ

Last updated at Posted at 2020-02-20

概要

docker を使うたびに毎回ググっていて非効率的なので自分がよく使うものをまとめました。
そのうち内容を追加するかもしれないです。
本記事の任意の内容は暗黙的に (おれだったらこうする) の意を込めているので、参考にされる場合は適宜修正してもらえばと思います。

ベターな方法あるよ〜 / 間違ってるよ〜などあったら教えていただけると助かります。

前提

リモートサーバー上にコンテナを立てて中で機械学習したい。

コンテナ編

コンテナを立てる

コンテナを立てる時にすることは、

  1. コンテナに名前をつける
    • --name $CONTAINER_NAME
  2. マウントするディレクトリを指定する
    • -v $DIR_SERVER:$DIR_CONTAINER
    • マウントするディレクトリが前、コンテナ内にマウントしたディレクトリを配置する場所が後
    • ディレクトリの指定は絶対パスで行う
  3. ポートを指定する
    • -p $PORT_SERVER:$PORT_CONTAINER
    • サーバーのポートが前、コンテナのポートが後

この3つ。なお、これらの操作はコンテナを立てた後には変更できないので、変更したい場合はコンテナを作り直す必要がある。

自分のいつも使っているコマンドはこんな感じ。

docker run --runtime=nvidia -it --privileged -v /home/$USER:/home/$USER -p 6006:6006 -p 8888:8888 --name $CONTAINER_NAME $IMAGE_NAME

① ホームディレクトリをマウントしつつ、② 60068888 のポートを外と繋げる。

ポートを増やしたい or マウントするディレクトリを追加したい

前述の通り、これらの操作はコンテナを立てる時にしか実行できないので、

  1. 新しくイメージからコンテナを立て直す
  2. 現在使用しているコンテナをイメージ化して再びコンテナを立て直す

のどちらかを行う。前者は普通に docker run でOK。
後者は docker commit でコンテナをイメージ化して docker run する。

docker stop $CONTAINER_NAME
docker commit $CONTAINER_NAME $IMAGE_NAME
docker run ...

コンテナに入りたい

バックエンドで起動しているコンテナに入りたい → docker attach $CONTAINER_NAME
終了しているコンテナに入りたい → docker start $CONTAINER_NAMEdocker attach $CONTAINER_NAME

コンテナから抜けたい

バックエンドで起動したまま抜けたい → ctrl + q + p
コンテナ自体を終了させたい → exit

サーバー編

ポート設定

jupyter notebook や tensorboard をブラウザ上で使いたい場合、ローカルとリモートサーバを繋ぐ設定をする必要がある。

  1. ローカルのポートとサーバのポートを繋ぐ
    • ssh -L $PORT_LOCAL:$PORT_SERVER
    • ローカルのポートが前、サーバーのポートが後
    • 踏み台サーバを経由する場合は、踏み台のポートも繋ぐ
    • ex) ssh -L $PORT_ROCAL:$PORT_VIA:$PORT_SERVER
  2. サーバのポートとコンテナのポートを繋ぐ
    • docker run -p $PORT_SERVER:$PORT_CONTAINER

の2つをやればOK。

自分の場合、2. に関しては、サーバの 8888 とコンテナの 8888 を繋いだので、
1. はローカルの 18888 (任意のポート番号) とサーバの 8888 を繋げば、localhost:18888 でコンテナの 8888 にアクセスできる。

ssh $SERVER_NAME -L 18888:8888 -L 16006:6006

ポートを複数繋げたいときは上記のように適宜 -L オプションを増やす。

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