2017/02/21更新

[Docker] Dockerに入門する(インストール、OSイメージ入手、コンテナ起動、コンテナ管理)

このエントリーをはてなブックマークに追加            

こんにちは、@yoheiMuneです。
最近Dockerを触り始めました。面白いですね!今日はDockerのインストールから、CentOS7のコンテナ起動までをブログに書けたらと思います。

画像

目次




Dockerとは

Dockerとは仮想化技術の1つで、最近はやりのコンテナ型の仮想化です。他の仮想化技術とは異なり、以下の図(右側)のようにオペレーティングシステム上でDockerが動くような仕組みのようです。
画像 https://www.docker.com/what-docker

他の仮想化技術に比べて、「1つずつのコンテナサイズが小さい」「コンテナの起動が早い」などのメリットがあります。サイズが小さいとコンテナをネットワーク経由で転送するにもしやすいですし、起動が早いのも非常に嬉しいところです。詳しいところは以下の記事がわかりやすかったので、そちらをご参照ください。

巷で話題のDockerとは? | Think IT(シンクイット)

それでは、Dockerを触ってみましょう。



Dockerをインストールする

本家サイトからダウンロード&インストールができます。各種環境に合わせたものがあるので、自分にあったものを選びます。また、WindowsとMac共にOSのバージョン指定などがあるのでその辺はサイトをご確認ください。

https://docs.docker.com/engine/installation/

インストールの結果、以下のコマンドが動けばOKです。
$ docker --version
Docker version 1.13.0, build 49bf474



DockerでCentOS7をコンテナ起動する

それではDockerを使ってみたいと思います。ここではCentOS7をコンテナで動かしてみます。


OSイメージを取得する

まずは、コンテナを生成するための元となるOSイメージを入手します。様々なOSイメージが Docker Hubで公開されています。
ここからCentOS公式のイメージを入手します。
https://hub.docker.com/_/centos/

他にも、DebianUbuntuなども公開されています。

イメージを見つけたら、以下のコマンドでダウンロードします。
# docker pull [イメージ名]:[タグ名]
$ docker pull centos:centos7
:centos7はタグで、どのイメージをダウンロードするのかを指定できます。

ダウンロードできたら、以下のコマンドで確認することができます。
$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              centos7             67591570dd29        5 weeks ago         192 MB
これでCentOSのイメージを入手できました。


コンテナを作成する

上記で入手したイメージからコンテナを作成します。docker runコマンドを使ってコンテナを作成し、そのコンテナにログインすることができます。
$ docker run --name test01 -i -t centos:centos7 /bin/bash
[root@d8ad028f734d /]#
上記で指定しているオプションは以下の意味です。
--name test01
コンテナ名を指定する
-i
インタラクティブモードで起動する
-t
仮想端末を割り当てる
-i-tを指定することで、コンテナ内で作業できる状態にすることができます。

画面はそのままに別のターミナルを立ち上げてdocker psを実行すると、起動中のコンテナ一覧が表示され、上で起動したコンテナが存在することがわかります。
# 別のターミナルで、起動中のコンテナ一覧を確認する
$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
d8ad028f734d        centos:centos7      "/bin/bash"              2 days ago          Up 3 minutes                                 test01


コンテナを終了する

終了させるためには、exitします。
[root@d8ad028f734d /]# exit
exit
インタラクティブモードの場合にはログアウトするとコンテナも一緒に終了します。docker psコマンドに-aオプションを付けて停止中のコンテナも含めて確認すると、今しがたログアウトしたコンテナがあることがわかります。
$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS                           NAMES
d8ad028f734d        centos:centos7      "/bin/bash"              2 days ago          Exited (0) 54 seconds ago                                   test01
STATUSがExited (0) 54 secondsになっているところから、EXITED状態であることがわかります。


もう一度、起動してコンテナに入る

先ほど止めたコンテナを再開してログインするには以下のように行います。
# コンテナを起動する
$ docker start test01
# コンテナにログインする
$ docker attach test01

# または、startの時にログインもする
$ docker start -a -i test01
これでコンテナにログインできました。


コンテナを破棄する

コンテナの破棄は以下のように行います。
$ docker rm test01
これで先ほど作成したtest01コンテナが消え去りました。
$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                   PORTS                           NAMES
これだけ簡単にコンテナを作成したり削除したりできるのはすごいですね。起動速度なども気にならずかなりサクサク使える感じです。これだけの使い勝手から「コンテナを使い捨てる」こともできるのかなと思います。



その他のコマンド

--helpオプションをつけてコマンド一覧や、各コマンドのヘルプを確認することができます。
# Docker全体について
$ docker --help

# 各コマンドについて
# docker [command] --help
$ docker run --help



参考情報

Dockerの情報は本家の情報もいいですが、僕は以下の本で学びました。基本的なところがザーッと学べて良かったです。

Docker実践ガイド impress top gearシリーズ(Amazon)



最後に

今日はDockerのさわりの部分でした。好きな環境をすぐに使えるのは非常に良いメリットだなと感じました。Dockerは仕事でも使うので、いっぱい記事も書けたらと思います。

最後になりますが本ブログでは、インフラ・フロントエンド・Go言語・Node.js・Python・Linux・開発関連・Swift・Java・機械学習など雑多に情報発信をしていきます。自分の第2の脳にすべく、情報をブログに貯めています。気になった方は、本ブログのRSSTwitterをフォローして頂けると幸いです ^ ^。

最後までご覧頂きましてありがとうございました!





こんな記事もいかがですか?

RSS画像

もしご興味をお持ち頂けましたら、ぜひRSSへの登録をお願い致します。