Carpe Diem

  Top > スポンサー広告> Docker > Docker を使ってみる  

スポンサーサイト

-- - --/-- [--] - --:--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Docker を使ってみる

2014 - 07/02 [Wed] - 21:47

コンテナー管理ソフトウェアの Docker を使ってみます。

「どっかーって何?」って方はこちらを参考にしてください。
アプリ開発者もインフラ管理者も知っておきたいDockerの基礎知識

Docker の開発は Ubuntu で進められているので、今回ホストのOSはUbuntuにします。
またデフォルトの12.04以下のカーネルだとLXCのバグが有るみたいなので、カーネルのバージョンをあげるか13.04以降を使いましょう。

今回は Ubuntu14.04 を使用します。

◆Dockerのインストール
公式のインストール方法はこちらです。
Installation - Ubuntu


$ sudo apt-get install docker.io

docker.ioサービスの自動起動を有効にしておきます。いつの間にかサービスの起動設定も変わってますね。

$ sudo update-rc.d docker.io defaults

これで docker.io コマンドで使えますが、ちょっと冗長なので docker にシンボリックリンクにするのがデフォみたいです。

$ sudo ln -sf /usr/bin/docker.io /usr/local/bin/docker

bash_completion を設定して複雑な補完ができるようにします。

$ sudo sed -i '$acomplete -F _docker docker' /etc/bash_completion.d/docker.io

使用するソケットファイル()の権限の関係で常にsudoが必要になっちゃうので、それが嫌な人は使うユーザを dockerグループに追加しましょう。以下はvagrantユーザの例です。

$ sudo gpasswd -a vagrant docker

グループの編集はログオフ&ログインしないと反映されないのでご注意を。

◆DockerイメージをDockerHubから持ってくる
GitHubのようにDockerのイメージが管理されています。以下のように検索できます。

$ docker search イメージ名

今回はCentOSを使うことにします。

$ docker search centos

一番上に公式のイメージがあるのでそれをローカルに引っ張ってきましょう。

$ docker pull {イメージ名}:{タグ名}

という書式なので

$ docker pull centos:latest

とします。完了するまでしばらく待ちましょう。


◆コンテナを起動してみる
書式は以下です。

$ docker run [オプション] [--name {コンテナー名}] {イメージ名}[:{タグ名}] [コンテナーで実行するコマンド] [引数]

長すぎですね。一番シンプルな起動をしてみましょう。

$ docker run centos echo "test"

test

これで一瞬だけコンテナが起動します。なぜ一瞬だけかというと、echoが実行されたらもう特にすることがないのですぐに休止状態になるためです。

休止状態になったコンテナは以下のコマンドで表示できます。

$ docker ps -a

-aを外すと実行中のコンテナのみ確認できます。またコンテナ名を指定せずに起動したため、自動で名前(tender_wright)がつけられてます。

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6b237f9defe4 centos:latest echo test 48 seconds ago Exit 0 tender_wright


今度はbashを起動してみましょう。またコンテナにも名前(bash-container)をつけます。

$ docker run -it --name bash-container centos /bin/bash
bash-4.1#

別ターミナルでコンテナ一覧を見るとちゃんとあります。

$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9974739c12de centos:latest /bin/bash 22 seconds ago Up 21 seconds bash-container

コンテナで起動したbashでhttpdでもインストールしてみましょう。

bash-4.1# yum install httpd

これでhttpdが入ったコンテナが作成できました。こんな感じで入れたいものを入れたコンテナを作ります。


◆コンテナから自作イメージの作成
次にインストールしたコンテナをイメージ化します。bashから抜けます。
イメージを作るコマンドは以下です。

$ docker commit コンテナIDorコンテナ名 ユーザ名/イメージ名


$ docker commit bash-container vagrant/httpd

とでもしておきましょう。

イメージ一覧で確認します。

$ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
vagrant/httpd latest 22ae6dde676c 8 seconds ago 205.4 MB
centos latest 0c752394b855 3 weeks ago 124.1 MB


◆自作イメージを動かしてみる
先ほどのコンテナ起動と同じ要領です。今回はインストールしたhttpdを起動するコマンドを投げましょう。
こういうサービス起動の時はバックグラウンドで起動させます。オプションは -d です。

$ docker run -d -p 80:80 vagrant/httpd /usr/sbin/httpd -D FOREGROUND

-p はホスト側とコンテナのポートをつなげるオプションです。

ブラウザやcurlで動作確認するとCentOSのデフォルトページが表示されます。

$ curl http://localhost


◆その他
不要なコンテナを削除するときは

$ docker rm コンテナIDorコンテナ名

です。今回なら以下です。

$ docker rm bash-container

イメージの削除は

$ docker rmi イメージIDorリポジトリ名

です。

最低限の使い方はこんな感じです。
次回はDockerファイルを扱ってみます。



ソース:
アプリ開発者もインフラ管理者も知っておきたいDockerの基礎知識
ついに1.0がリリース! Dockerのインストールと主なコマンドの使い方
GitLab環境爆速準備(Ubuntu Server 12.04 LTS + Docker)
Docker超入門

コメントの投稿





管理者にだけ表示を許可する

 | ホーム | 

プロフィール

Cicatrice

Author:Cicatrice
備忘録

検索フォーム

カテゴリ

最新記事

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。