Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

This article is a Private article. Only a writer and users who know the URL can access it.
Please change open range to public in publish setting if you want to share this article with other users.

More than 3 years have passed since last update.

Dockerイメージを作成してコンテナを起動するまでの操作

Last updated at Posted at 2019-02-03

Dockerとは (かなり意訳して説明)

Dockerとは,あるPC(ホストPC)の中に仮想環境上の機能(コンテナ)を作成する仕組みであり,自分が作りたい仮想的な機能(コンテナ)群をカスタマイズして構築する事ができる.ここで言う「自分が作りたい仮想的な機能」とは,例えばUbuntu16にCUDA8を搭載してPytorchをインストールしたマシンなどです.
仮想的な機能はイメージという形で一度作成しておけば,何度でもイメージから仮想的な機能(コンテナ)を起動して利用(コンテナ上で作業)する事ができる.
では,そんな仮想的な機能のイメージをどの様に作成するのか,その設計図に当たるのがDockerfileと言うテキストファイルになる.Dockerfileは仮想的な機能(コンテナ)にどの様なOSやパッケージ(wgetやcmake)を搭載するのか,また,どの様なファイルを格納しておくのか(ホストPCのファイルを事前にイメージにコピー)を定義する役割をもつ.

使い方の流れ

  1. 公開されているdockerイメージがあればそれをpullして利用する
  2. dockerイメージを独自に作成する場合は,DockerFileとDocker buildコマンドでdocker imageを作成する
  3. docker runコマンドでdocker imageからコンテナを起動する

Basic command on Docker

command
# check Docker info
docker info

# バージョン確認
docker --version

# イメージの取得
docker pull <Docker image>
# ex) docker pull ubuntu:18.04

# Dockerfileからイメージの作成
docker build
docker build [ -t {イメージ名} [ :{タグ名} ] ] {Dockerfileのあるディレクトリ}
# pytorchをGitHubからクローンしてビルドするケース
docker build -t pytorch -f docker/pytorch/Dockerfile .
docker build -t (tagの名前) .

# DockerコンテナのDockerイメージ化
docker commit [コンテナ名] [新規イメージ名]

# DockerイメージをDocker Hubにアップロード
docker push
# メモリ関連
docker stats [コンテナ名]
 docker run --memory=60g ...

##イメージの操作

operation

# 保有しているイメージの一覧を表示
docker images

# Dockerイメージの削除(不要になったDockerイメージの削除)
docker rmi IMAGE_ID

# 削除
docker image rm {IDもしくは image name}

# 未使用のイメージを全て削除する
docker images -aq | xargs docker rmi

##コンテナの操作
コンテナとはイメージを起動したもの

operation
# 保有しているコンテナを確認
docker container ls -a

# DockerイメージからDockerコンテナの作成(と起動)
docker run -itd --name <container name what you like> <image name>
# --nameオプションがないとランダムなコンテナ名が付けられる
# docker run -itd --name centos1 centos /bin/bashなどとしてシェル指定できる。
# -vオプションではホストPCのディレクトリをマウントする
# docker run -v <host pc dir>:<container dir> <image name> /bin/bash
# -dはバックグラウンド。-dがないとexitするとコンテナも停止する。
# -pでポートのマッピングもできる。-p 8888:80とすると、ホストの8888をコンテナの80にマップできる。

# GPU利用可能なコンテナの起動(--gpus allのオプションを使用)
docker run --gpus all -itd --name nvidia_cuda_cont nvidia/cuda:10.0-cudnn7-devel-ubuntu16.04

# 起動中のDockerコンテナを確認
docker ps

# Dockerコンテナ上の環境に対しコマンド実行
docker exec
# ex) docker exec -it ubuntu18.04 /bin/bash

# ファイルのコピー
docker cp
# ホストからコンテナへ
docker cp tmp.txt <コンテナID>:/etc/tmp.txt
# コンテナからホストへ
docker cp <コンテナID>:/etc/tmp.txt tmp.txt

# Dockerコンテナの停止
docker stop CONTAINER_ID_or_NAMES
# コンテナ内の作業状況は保持されている

# 停止中のDockerコンテナの再スタート
docker start CONTAINER_ID_or_NAMES

# Dockerコンテナの削除
docker rm CONTAINER_ID_or_NAMES
# コンテナ内の作業状態は破棄される
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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?