すぐにDockerを試したい人のための基礎コマンド

Docker 虎の巻

Dockerの基礎のまとめが良かったので翻訳してみた.原典は,Docker Cheat Sheet.このまとめは説明は十分にあるが,例がほとんどない.実例を使って,コンテナとイメージに関する基礎コマンドをまとめてみる.

OS X で試したい

Vagrantを使う.バージョン1.4からはDockerのprovisioningに対応してるのでそれを使う. Download Vagrant - Vagrantより.dmgをダウンロードしてきてインストール.

vagrant init precise64 http://files.vagrantup.com/precise64.box

Vagrantfileを以下のようにすれば,すぐにDockerを使える.

Vagrant.configure("2") do |config|
    config.vm.box = "precise64"
    config.vm.provision :docker do |d|
        d.pull_images "ubuntu"
    end
end

ログイン

vagrant ssh

準備

コンテナのIDをいちいち保持しておくのは面倒,忘れるので,以下のaliasを設定しておくと直近に起動したコンテナのIDを呼び出すことができるようになる(15 Docker tips in 5 minutes).

alias dl='docker ps -l -q'

コンテナ

コンテナを作成する.-dオプションでバックグラウンドで実行する.

docker run -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done"

コンテナを停止する.

docker stop `dl`

コンテナを起動する.

docker start `dl`

コンテナを再起動する.

docker restart `dl`

起動中のコンテナに接続する.

docker attach `dl`

コンテナ内のファイルをホストにコピーする.

docker cp `dl`:/etc/passwd .

ホストのディレクトリをコンテナにマウントする.

docker run -v /home/vagrant/test:/root/test ubuntu echo yo

コンテナを削除する.

dockr rm `dl`

コンテナの情報

起動中のコンテナを表示する.停止中のコンテナも表示するには,-aオプション.

docker ps

コンテナの情報(IPなど)を表示する.

docker inspect `dl`

コンテナのログを表示する.

docker logs `dl`

コンテナのプロセスを表示する.

docker top `dl`

イメージ

コンテナからイメージを作成する.タグ名は<username>/<imagename>が奨励されている

docker run -d ubuntu /bin/sh -c "apt-get install -y hello"
docker commit -m "My first container" `dl` tcnksm/hello

Dockerfileからイメージを作成する.

echo -e "FROM base\nRUN apt-get install hello\nCMD hello" > Dockerfile
docker build tcnksm/hello .

イメージ内にログインする.-rmオプションをつけるとコンテナの停止後にそのコンテナは破棄される.

docker run -rm -t -i tcnksm/hello /bin/bash

イメージをリモートレポジトリにアップロードする.あらかじめDocker indexにアカウントを作成しておく必要がある.今回の例はこちら.

docker login
docker push tcnksm/hello

イメージを削除する.

docker rmi tcnkms/hello

イメージの情報

イメージ一覧を表示する.

docker images

イメージの詳細情報(IPなど)を表示する.

docker inspect tcnksm/hello

イメージのコマンド履歴を表示する.

docker history tcnksm/hello