Posted at

dockerメモ

自分用のメモ:writing_hand_tone2:


インストール

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でホストのデータ領域をマウントする時に使う方法

https://kiririmode.hatenablog.jp/entry/20180608/1528447002

便利な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=''