2017年4月9日日曜日

Dockerの使い方

今回はコマンド編



Dockerって本当に便利?

前回はインストールを行い、軽くコマンド操作してDockerの使ってみてどういうものが分かってきた。
でも分かってくると、

 これってDockerじゃなくてもVMWareやVirtualBoxのようなVMでいいじゃん

って思うようになった。
この疑念は次の文章で解消される。

VMを使うときってイメージのバックアップや起動・停止もランチャー操作で簡単にできるし不便な事は何もない。
DockerのGUIは使った事ないけど、ネットワークの設定はHyper-VだしVMとやってる事はほぼ同じ。なのになぜ騒がれているんだろう。
この疑問はDockerって新しい技術は使われていないという部分を意味している。

他、様々な情報をまとめていったら見えてきた答えが1つある。
VMとDockerの決定的な違いは

DockerはGitHub技術がベースになっている事

これに尽きる。

VMの場合はOSイメージをダウンロードしてから仮想環境のイメージを作ってパッケージインストールする一連の手間と時間がかかる。
一方、Dockerの場合は、

Dockerイメージを取ってくるだけ。

いいものができたらGitHubにアップロードして貢献することもできる。
Dockerコミュニティーは楽させようと献身的な人たちやドヤ顔( ・´ー・`)が大勢いるので、Gitな我々(Hub)はその恩恵にあずかれる分けである。


Dockerの概要

今日インストールばかりだけど、Dockerを色々触って感じたまま図にしました。
間違ってる箇所もあるかもしれませんが、大体こんな感じ。

Dockerの全体図

Step1.GithubからDockerイメージをPullする。
 Step2.DockerイメージをRunする。(コンテナ生成)
 Step3.コンテナをいじくる。(1サービス1コンテナ単位)
 Step4.いじくったコンテナをイメージ化する。(Step2へ)

今までならホストOSの中にパッケージを詰め込んで環境構築して、
その中に複数サービスを入れてバージョン管理を気にしなければならなかった。
Dockerの場合はコンテナにパッケージを詰め込むので、

 1コンテナ=1サービス

という考えになってくる。
つまり、Dockerのマスコットキャラであるクジラの絵のようにホストOSにコンテナを積むという感覚になり、パッケージ依存もコンテナ内で完結しているから他サービスに影響しない。
つまり便利である

覚えておいた方がいいコマンドについて

ざっと下にコマンドを並べてみました。
上の図をみて分かる通り、

GitHub ⇔ ローカルPC(Dockerイメージ ⇔ Dockerコンテナ)

というように3つのブロックに分かれている。

Dockerコマンド体系はごった煮状態で区別つかないので分割してコマンド一覧を書きました。

Dockerイメージ系コマンド一覧

dockerイメージ検索

 docker search [検索ワード] 

dockerイメージ取得

 docker pull [dockerイメージ名]

取得したdockerイメージ一覧

 docker images

取得したdockerイメージの削除

 docker rmi [dockerイメージ名]

---------------------------------

コンテナ系コマンド一覧

 

コンテナ作成&アタッチ

 docker run --name コンテナ名 -it [dockerイメージ名]

コンテナ一覧

 docker ps -a

コンテナ削除

 docker rm [コンテナ名]

コンテナにアタッチ(exitすると停止)

 docker attach [コンテナ名]

コンテナにアタッチ(exitしても起動状態)

 docker exec [コンテナ名]

コンテナ起動

 docker start [コンテナ名]

コンテナ起動&アタッチ

 docker start -a [コンテナ名]

コンテナ停止

 docker stop [コンテナ名]

コンテナ即時停止

 docker kill [コンテナ名]

----------------------

コンテナ→イメージ化


コンテナ変更内容

 docker diff [コンテナ名]

コンテナのコミット(イメージ化)

 docker commit [コンテナ名] [作成するイメージ名]

変更履歴

 docker history [コンテナ名/イメージ名]

----------------------

Dockerイメージをアップロード


githubにログイン

 docker login

githubにプッシュ

 docker push [イメージ名]



コマンド一覧を書いて思ったこと


 Dockerイメージとコンテナの仕組みさえ分かってしまえば、
  • パッケージ管理(apt-get, yum, npmなど)
  • GitHub
  • Linuxコマンド
を使ったことがあれば感覚で使えるようになっていた。
あとはオプションコマンド。
コマンド毎に色々あるし、ここはやはり人海戦術的に

  使って覚えるしかないね。


参考URL







コメントを投稿

Androider