端くれプログラマの備忘録 Docker [Docker] bashを実行するだけの超入門

[Docker] bashを実行するだけの超入門

Dockerに馴染むべく、以下の例をなぞってみる。

VagrantとDockerについて名前しか知らなかったので試した – Qiita
http://qiita.com/hidekuro/items/fc12344d36d996198e96

1. ゲストOSとしてUbuntu14.04を導入

> mkdir c:\temp\ubuntu14.04
> cd c:\temp\ubuntu14.04
> vagrant init --minimal ubuntu/trusty64
> vagrant up

先にBoxを追加してからinitしても同じこと。

> vagrant box add ubuntu/trusty64
> mkdir c:\temp\ubuntu14.04
> cd c:\temp\ubuntu14.04
> vagrant init ubuntu/trusty64
> vagrant up

2. DockerをゲストOSに導入

VagrantのDocker Provisionerを使うと楽らしい。

プロビジョニングはvagrant upした際に自動的に実行される機能で、ソフトウェアを自動インストールするためなどに使う。

Vagrantfileを編集

Vagrant.configure(2) do |config|
    config.vm.box = "ubuntu/trusty64"
    config.vm.provision "docker" ←追加
end
> vagrant provision

3. Dockerイメージの作成

bashを起動するだけのイメージを作成してみる。

作業ディレクトリを作成。

$ mkdir docker
$ cd docker

Dockerファイルを作成。

$ vi Dockerfile
FROM ubuntu:trusty
MAINTAINER 84kure
CMD ["/bin/bash"]

イメージをビルド。

$ docker build -t 84kure/test1 .

以下オプション。

-t イメージにタグ付け
. Dockerfileのパス

 

コンテナを作成。

$ docker run -i -t -v /vagrant:/tmp/shared --name="test1" 84kure/test1

以下オプション。

-i 対話モード
-t 擬似ターミナル割り当て
-v /vagrantを/tmp/sharedにマウント
–name=”test1″ コンテナに名前付け
84kure/test1 イメージ指定

 

bashが実行される。

root@1503b7d1d158:/# exit ←bashを終了
$ ←コンテナ終了して戻る

コンテナを確認。

$ docker ps -a
CONTAINER ID  IMAGE                     COMMAND      CREATED         STATUS              PORTS NAMES
1503b7d1d158  84kure/test1:latest       "/bin/bash"  2 minutes ago   Exited (0) 9 seconds ago  test1

コンテナを捨てる。

$ docker rm 1503b

4. Dockerイメージの作成を自動化

Vagrantfile

Vagrant.configure(2) do |config|
    config.vm.box = "ubuntu/trusty64"
    config.vm.provision "docker" do |d|
        d.build_image "/home/vagrant/docker", args: "-t 84kure/test-image"
        d.run "84kure/test-image", args: "-d -t -v /vagrant:/tmp/shared"
    end
end
> vagrant reload --provision

以上、超入門。