dockerメモ


自分用のメモ

インストール

https://docs.docker.com/install/linux/docker-ce/centos/
$ sudo docker run hello-world まで確認

イメージの一覧

$ docker images

コンテナの操作

コンテナの一覧を表示する

$ docker ps -a

STATUS
UP=起動中
Exited=停止

コンテナの生成+起動

$ docker run [オプション] イメージ名[:タグ名] [引数]

$ docker run [オプション] イメージ名[:タグ名] /bin/bash
$ docker run -it -p 8888:8888 tensorflow/tensorflow

docker run オプション

オプション 内容
-it コンテナを作ってログインする
--rm コンテナ終了時にコンテナを自動的に削除
--name 名前 設定した名前でコンテナを起動
-d バックグラウンドで実行する
-p XXXX:YYYY ホストのポートXXXXがコンテナのポートYYYYにマップする
-v \${DIR_ON_HOST}:${DIR_ON_CONTAINER} コンテナにボリュームを割り当てる
-w dir_on_container dir_on_containerをワーキングディレクトリに設定
--runtime=${RUNTIME} GPU対応tensorflowで使うやつ。公式ドキュメントにもコンテナに使うランタイムとしか書いてない

ログイン状態から抜けるdettach(デタッチ)
ctrl + P → ctrl + Q

コンテナの起動

$ docker start ${container_id} or ${name}

コンテナの停止

$ docker stop ${container_id} or ${name}

コンテナの操作

起動中のコンテナに入ってbashを使う

rootユーザでコンテナに入る

USER=root
CONTAINER_NAME=jupyter
docker exec -it --user ${USER} ${CONTAINER_NAME} /bin/bash 

イメージの作成

コンテナからイメージを作成

CONTAINER_NAME=jupyter
REPOSITORY=continuumio/anaconda3
TAG=snorkel
docker commit ${CONTAINER_NAME} ${REPOSITORY}:${TAG}

Dockerfileからイメージを作成

tagを省略しているので、latestが付与される

IMAGE_NAME=test
DOCKERFILE_PATH=.
docker build -t ${IMAGE_NAME} ${DOCKERFILE_PATH}

tagを付ける場合

IMAGE_NAME=test
TAG_NAME=1.0
DOCKERFILE_PATH=.
docker build -t ${IMAGE_NAME}:${TAG_NAME} ${DOCKERFILE_PATH}

Volume dockerでホストのデータ領域をマウントする時に使う方法

便利なdocker

Jupyter

$ docker run --rm --name jupyter -d -p 8888:8888 \
    -v `pwd`/workspace:/workspace -w /workspace \
    continuumio/anaconda3 \
    jupyter-lab --no-browser --port=8888 --ip=0.0.0.0 \
    --allow-root --NotebookApp.token=''