メモ書き

自分が後で見直すためにつけている作業のメモ書きです.それ以上の意味はありません

Docker の利用方法

Docker をインストール後での docker コマンドの使い方について記録

用語

  • (Docker)イメージ
    • コンテナのテンプレート.
    • Docker は新しいイメージを作ったり,既存イメージを更新したり,他の人が作ったイメージを利用したりする方法を提供する.
    • ローカルにダウンロードしたイメージはリポジトリのと区別するためローカルキャッシュと呼ばれることもある
  • (Docker)コンテナ
    • ディレクトリと同じようなもの
    • 対象とするアプリケーションの実行に必要なファイルすべてが含まれる
    • 個々のコンテナはイメージから作られる.
    • コンテナは実行,開始/停止, 移動,削除できる.
    • 個々のコンテナは分離されている.
  • Dockerfile
    • イメージ(コンテナ)を作るための手順をまとめたスクリプト
    • イメージの作成手順やインストール構成を明確に残しておくことができる
    • GitHub などと連携して使う.
  • Docker Engine
    • Dockerコンテナを生成したり実行したりするソフトウェア.UIを受け持つクライアントの部分とバックエンド処理を行うサーバの部分から成る.
    • 一方,Docker は Docker Engine と同様の意味で用いられたり,Docker Hub なども含めた総称的な技術の名称として使われたりする.
  • Dockerレジストリ, Docker Hub
    • Dockerイメージを共有するためのWebサービス.代表例として Docker Hub がある.

コマンドあれこれ

  • イメージの操作
    • Dockerレジストリからイメージを取得する.
    • イメージは "イメージ名:タグ名" の形で指定する.タグ名はなくても動く.
    • イメージ名は通常 "ユーザ名/イメージ名" で指定する.一方で「トップレベリポジトリ」と呼ばれる公式配布のイメージもあり,ユーザ名をつけない.
# イメージを(既定では Docker Hub から)取得する.
# ここでは CentOSの最新イメージを取得.
# イメージ名にユーザ名がついていないのは公式配布のイメージだから.
$ docker pull centos:latest

# イメージの一覧を確認する
$ docker images

# イメージを削除
$ docker rmi centos
  • コンテナの操作
    • オプションとして以下で示すものの他に "-p portNum_host:portNum_container" というのもある.これによりホストとコンテナの間のポートマッピングを構成可能
# centos イメージからコンテナを生成し echo コマンドを実行する.
# コンテナがローカルに存在しない場合,pull およびコンテナ生成も行われる.
$ docker run centos:latest echo "Hello World"

# --name オプションでコンテナに名前を付けられる.
# コンテナ名は削除の際の名前としても利用可能.
$ docker run --name="hello_world" centos:latest echo "Hello World"

# bash を実行.-i で標準入力を開き,-t で仮想端末を確保する.
$ docker run -i -t centos bash

# bash を実行.-d 指定によりバックグラウンドで動かす.
$ docker run -i -t -d --name="my_bash" centos bash

# コンテナの一覧を表示.
# -a オプションをつけると動作状態にかかわらずすべてのコンテナを表示する.
$ docker ps -a

# 開始済みバックグラウンド動作のコンテナに接続.
# この場合,root ユーザで作業することになる.bash は exit で終了する.
$ docker attach my_bash

# 停止中のコンテナを開始する.
$ docker start my_bash

# 動作中のコンテナを停止する.
$ docker start my_bash

# コンテナを削除する.
$ docker rm my_bash
  • コンテナからイメージを作る
    • 作業を加えたオリジナルのコンテナをイメージ化する
# my_container というコンテナから my_user/new_image_name というイメージ作成
$docker commit my_container my_user/new_image_name

# イメージを確認
$docker images
  • Docker Engine の情報を表示する
    • コンテナ,リポジトリ,ホストの情報取得には info
    • クライアントやサーバの情報取得には version
$ docker info
$ docker version
  • Docker Hub にログインする
$ docker login
  • Dockerレジストリへのコンテナアップロード
    • アップロード可能なのはイメージ名が「{ユーザー名}/」から始まるもののみ.
    • Docker Hub 以外の自前の Dockerレジストリでは「{ユーザー名}」の代わりに「{レジストリのホスト名/IPアドレス}:{ポート番号}」を指定する.
$ docker push

Dockerfile でイメージを生成

別エントリに記述する.nsaito-nmiri.hateblo.jp

自前でDockerレジストリを構築する(Not Yet)

参考

www.atmarkit.co.jp
pydiary.bitbucket.org