魔術師見習いのノート

プロフィール

魔術師見習い
Author魔術師見習い-_-.
Twitter魔術師見習い

コンピュータ関係のメモを主に書きます.

MENU

Docker メモ

投稿日:
タグ:

Dockerとは

Linux用のオープンソースのソフトウェアコンテナ(コンテナ)のこと。類似したソフトにはLXCやFreeBSDのjailなどがある。


インストール(Debianの場合)

  1. APTのデータ取得元の設定リストにURLを追加 (以下jessieの場合)。
    /etc/apt/sources.list
    • deb https://apt.dockerproject.org/repo debian-jessie main
      
    • deb https://apt.dockerproject.org/repo debian-wheezy main
  2. パッケージを更新する。
    sudo apt-get update
  3. Dockerをインストールする。
    sudo apt-get install docker-engine
  4. デーモンが実行していない場合、dockerデーモンを起動する。
    sudo service docker start
apt-getでhttpsを利用する

apt-getはデフォルトではhttpsを利用できない(はず)。

E: メソッドドライバ /usr/lib/apt/methods/https が見つかりません。
apt-getで利用可能なプロトコルは、以下のようにして確認できる。
ls /usr/lib/apt/methods

対応してない場合、httpsのプロトコルと証明書を追加する。

sudo apt-get install apt-transport-https ca-certificates
APTキー管理ユーティリティで、公開鍵の設定を行う。
sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D

失敗談

はじめ、Dockerをインストールしようとして、

sudo apt-get install docker
とやって実行を試みた。
sudo docker run hello-world
すると結果は、
Segmentation Fault or Critical Error encountered. Dumping core and aborting.

このDockerはドッキングアプリケーションのことである。詳しくは"aptitude show docker"とかで確認できる。


とりあえず実行する

現在管理しているイメージはimagesで確認できる。

user% sudo docker images
デフォルトでは、Welcomメッセージを表示するhello-worldイメージが用意されている(はず)。

イメージは、runコマンドで指定したコンテナを実行できる。

user% sudo docker run hello-world
コンテナ名を指定しない場合、デフォルトで"nostalgic_almedia"というコンテナが使用される。

実行中のコンテナは、psで確認できる。

user% sudo docker ps -a
シェルのような対話的なコマンドをコンテナで実行するには、-itオプションを使用する。
user% sudo docker run -it ubuntu:14.04 /bin/bash
ubuntuのイメージがない場合、イメージをダウンロードしてから実行する。

また、--nameでコンテナに名前をつけることができる。

user% sudo docker run --name="test" ubuntu /bin/bash
user% sudo docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
86f74cf40355        ubuntu              "/bin/bash"         18 seconds ago      Exited (0) 16 seconds ago                             test

Bashからexitで抜けて、ホストに戻った後、imagesをもう一度実行すれば、イメージが増えているのが分かるだろう。

user% sudo docker images


停止中のコンテナを再開する

  1. コンテナを確認する。
    user% sudo docker ps -a
    CONTAINER ID        IMAGE               COMMAND		CREATED              STATUS                      PORTS		NAMES
    9fec70d35bde        ubuntu              "/bin/bash"     About a minute ago   Exited (0) 14 seconds ago            	sleepy_williams
  2. (停止中の)コンテナを実行する。
    user% sudo docker start 9fec70d35bde
    startは以下のように使用する。
    user% sudo docker start [オプション] コンテナ名|コンテナID ...
  3. 実行中のコンテナでコマンドを実行する。
    user% sudo docker exec 9fec70d35bde ls
    user% sudo docker exec オプション コンテナ名|コンテナID コマンド
  4. 実行中のコンテナをアタッチする。
    user% sudo docker attach 9fec70d35bde

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

  1. コンテナを確認する。
    user% sudo docker ps -a
    CONTAINER ID        IMAGE               COMMAND		CREATED              STATUS                      PORTS		NAMES
          9fec70d35bde        ubuntu              "/bin/bash"     About a minute ago   Exited (0) 14 seconds ago            	sleepy_williams
  2. コンテナからイメージを作成する。
    user% sudo docker commit 9fec70d35bde hoge
  3. イメージを確認する。
    user% sudo docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED		SIZE
    hoge                latest              8a2222fb559e        5 seconds ago       188 MB
    ubuntu              14.04               07c86167cdc4        4 days ago		188 MB
  4. 作成したイメージからコンテナを作成し、実行する。
    user% sudo docker run hoge
  5. コンテナを確認する。
    user% sudo docker ps -a
    CONTAINER ID        IMAGE               COMMAND             CREATED	STATUS                     PORTS               NAMES
    937b91f51708        hoge                "/bin/bash"         9 seconds ago       Exited (0) 7 seconds ago	               elegant_northcutt
    9fec70d35bde        ubuntu              "/bin/bash"         31 minutes ago      Up 13 minutes                                  sleepy_williams

基本コマンド

docker コマンド オプション
ps
実行中のコンテナの一覧を表示。
run
新しくコンテナを実行。
rm
コンテナを削除。
images
取得したイメージの一覧を表示。
rmi
取得したイメージを削除。
search
Docker Hubからイメージを検索する。
stop
実行中のコンテナを停止させる。
commit
コンテナからイメージを作成する。
docker run イメージ名
新しくコンテナを実行する。
docker images
ダウンロード済みのイメージの一覧を表示する。
docker ps -a
実行されたコンテナの情報を表示する。
docker save イメージ > tarファイル
docker save -o tarファイル
docker save --output tarファイル
イメージをtarファイルに保存する。saveとloadはセットで覚えた方が良い。xzやgzipと組み合わせれば、tar.gzやtar.xzなども作成可能。
docker load イメージ < tarファイル
docker load -i tarファイル
docker load --input tarファイル
保存したtarファイルからイメージを読み込む。

忘れた時は...

サブコマンドの確認..
sudo docker
サブコマンドの使い方の確認..
sudo docker サブコマンド --help

その他

管理者権限なしでdockerを使用する
sudo groupadd docker
sudo gpasswd -a ユーザ docker

メモ

  • 3.14以前のLinuxカーネルではPAMを利用できない。

一覧