Various tips

しがない院生の開発日記

Docker 自分用メモ

docker run "イメージ名"

イメージからコンテナを作成
--name オプションでコンテナ名前付
--privileged でusb等のアクセス権付与
例えば、

sudo docker run -i -t --net host -e DISPLAY=$DISPLAY \
    --privileged --name test1\
    -v $HOME/.Xauthority:/root/.Xauthority:rw \
    ubuntu /bin/bash

とすれば、ubunbtu起動時に
全権付与
名付け
ホストのネットワーク利用
ホストディスプレイ出力(xauthおよびDISPLAY値)
を指定してコンテナ作成。
この場合、
ホスト側の端末で

xhost local:

と打ってやればコンテナのアプリをディスプレイに出力可能。
コンテナ稼働が終わったら、

xhost -local: or xhost -

でディスプレイ出力を閉じる


docker stop/kill

コンテナ停止
イメージはあくまでコンテナを作るためのもとになるデータだからstart/stopには関係なし


docker start
docker attach "コンテナID"

stop/killしたコンテナを再起動(killはコンテナを削除するわけではない)
attachすると起動したコンテナでbashできる。
attachの他、exec ~~~~ /bin/bash
も同様の働き(?)
attach状態を解除するためにはexitを入力してあげる。
exitした段階でコンテナは停止するので注意。


1 docker ps -a
2 docker container list
3 docker image list

1 停止しているコンテナからなにまで全てを表示
2 稼働中のコンテナリスト
3 イメージリスト


docker rm "container name"

コンテナのID番号を指定してコンテナを削除。


docker rmi "image name"

イメージの削除
タグ名を指定するとタグを削除してくれる。(タグが一つだけだと単なるイメージ削除になる(?)複数だとタグ削除。)


docker commit "コンテナ名" "イメージ名"

コンテナのイメージ化。
下のtagおよびpushとまとめて覚えておきたい。


dokcer tag "イメージ名" username/repository name:tag name
docker push username/repository name:tagname

ローカルに保存しているイメージ名をdokcerルールに従って変更し、Docker Hubに送り出す。


docker cp "移送対象" "移送先"

ホスト<->コンテナ間のファイルコピーを行える優れコマンド。




<Dockerでanaconda環境を実行>
qiita.com

sudo docker run \
    -d -i -t \
    -p 8888:8888 \
    --name jupyter-notebook \
    -v $HOME/jupyter-notebook/notebooks:/opt/notebooks \
    continuumio/anaconda3 \
    /bin/bash -c "/opt/conda/bin/conda install jupyter -y --quiet && /opt/conda/bin/jupyter notebook --notebook-dir=/opt/notebooks --ip='*' --no-browser --allow-root"

上記だと--nameでコンテナに名前をつけている。
イメージをrunした後に

docker logs jupyter-notebook

とするとtoken付きURLが発行されている。(詳しくは上記Qiita記事参照)