お問い合わせはこちら

【入門】Dockerにできること!メリット、使い方そして基本コマンドとは?

公開 2017/08/21
更新

Dockerは難しそうな印象があるため、利用をあきらめていませんか。いま多く利用されている重要な技術です。Dockerにできることを知って、これから活用していきましょう!

Dockerとは

本来Dockerには港湾労働者の意味があります。貿易に携わる彼らの仕事道具が、コンテナ (Container)と呼ばれる物理的な入れ物です。これは単なる器ではなく、積めたり移動したりする時にルールがあり、船舶による効率的な海上輸送を実現する重要な手段になりました。2013年に誕生したIT版Dockerは、仮想化を支える一つの技術としてその後急速に普及しています。

言うまでもなくインターネットの普及を支えているのは、Webサーバーをはじめとした各種サーバー機器のおかげです。ただ世の中のWebサイトの爆発的な増加にともなって、機器も同じように増加すると、サーバーの置き場所も費用もそして管理も膨大になります。そこで1台のサーバー上に、複数のサーバーとして利用できる仕組みを構築する方法ができました。それが仮想化と呼ばれる技術です。

Dockerは多くの機能の集合体で、それまで続いていた作業や管理方法を激変させた仕組みです。これで、開発などで発生するさまざま作業を自動化できるようになりました。チームで共同作業ができたり、見知らぬエンジニアが用意してくれた設定内容を再利用ができるようになりました。

コンテナについて、カゴヤのサーバー研究室では以下の記事で詳しく解説しています。

【再入門】コンテナ技術とは?基本をわかりやすく解説します

【再入門】コンテナ技術とは?基本をわかりやすく解説します

日常生活でコンテナは知っていても、IT業界のそれとどう関連するのかわからない方に向けに、この記事であらためて解説しています。もともとコンテナが使われてきたのは貿易業界で、そこでの意味もご紹介しています。これで、なぜコンテナが「技術」として大切かご理解いただけると考えています。キーワードは「整理整頓」と「効率化」です。 貿易業界の「コンテナ」とは? まずは貿易業界で使われている「コンテナ」についてご…

Dockerにできること!

  • 1台のサーバー内に複数のサーバーが作成可能なため、限られた機器を有効に活用できる
  • 他の場所に移転がしやすい(一般的なコンテナと同様)
  • 保守の手間を最小限に抑えることができる
  • Dockerイメージ(アプリとその設定)を利用したいときはコマンド一つででき、毎回ダウンロードやインストールする必要がない
  • 自動化できるため、インストールと設定作業が正確に短時間でできる
  • 設定方法を他のエンジニアとインターネット上で簡単に共有できる

カゴヤ・ジャパンでは手軽にDockerが体験できます。テンプレートも用意されているため、すぐに簡単に始められます。以下のページで詳しく解説しています。

Docker を使って コンテナ仮想化を体験する

Docker を使って コンテナ仮想化を体験する

カゴヤのVPSでは CentOS や Ubuntu、Windows などのOSに加え、必要なパッケージがインストール済みのテンプレートも用意されています。テンプレートを使うことで、面倒で複雑な環境構築作業を大幅に削減することが可能です。利用目的に合わせた環境を簡単に素早く構築できるため、学習や開発・テストなど、やりたいことをすぐに始められます。また日額料金で使い始めることができるので、少しだけ環境…

Docker利用のメリット

  • 全体の作業時間を短縮できる機能が多く用意され、自由に利用可能(Docker ID登録が必要な場合有)
  • 処理速度が速い(CPUやメモリーの使用量を節約できる)
  • 移転しやすい

これらのメリットがより活きる用途として、以下のような作業が挙げられます。

  • 開発作業の共有
  • 複数のOSでの動作チェック
  • バージョン管理システム

次章からは、Dockerの導入方法やコマンドの操作方法を解説します。それではさっそく始めましょう!

Dockerのインストール方法

Linuxの各種ディストリビューションだけでなく、WindowsやMacでもDockerを利用できます。今回はCentOS7(64bit)を利用して解説していきます。

レンタルサーバー会社のプランにより、Dockerを数クリックでインストールできる簡易的な方法があります。今回は個々の操作説明のため、標準的な方法でインストールを実施します。検証用には以下のVPSを利用しました。

企業名カゴヤ・ジャパン
プラン名KAGOYA CLOUD VPS
CPU2コア
メモリー2GB
ストレージSSD 30GB
OSテンプレートCentOS7(64bit)
料金日額 35円(税込)、月額上限 979円(税込)

Docker公式サイト(英文)に掲載されている以下の手順を参考にしています。

Install Docker Engine on CentOS
https://docs.docker.com/engine/install/centos/

まず初回のみレポジトリ(一元管理している保管場所情報)を設定します。

【コマンド】

yum install -y yum-utils
yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

続いてDocker本体のプログラム「Docker Engine」の最新版をインストールします。

【コマンド】

yum install docker-ce docker-ce-cli containerd.io

次にDockerを開始します。

【コマンド】

systemctl start docker

サーバー再起動時に、Dockerが自動的に開始するよう設定します。

【コマンド】

systemctl enable docker.service
systemctl enable containerd.service

カゴヤのサーバー研究室では、VPSの申し込みからDockerの詳しいインストール方法まで以下の記事で詳しく解説しています。サーバーを触ったことがない方でも、Dockerの学習を進められるよう詳しく解説しています。全4回の連載記事です。これから学習を始める方は、ぜひご参考にしてください。

VPS + Docker で トレンド技術を使いこなす【 第1回: コマンド1行でアプリが動く Docker 】

VPS + Docker で トレンド技術を使いこなす【 第1回: コマンド1行でアプリが動く Docker 】

「クラウド」という言葉が世間一般に広く浸透した今の時代、様々なサービスが毎日のようにリリースされ、ユーザーである私達の生活はどんどん便利に、快適になっています。それらのサービスは「クラウド」という言葉が指す通り、雲の向こうでどのように動いているのかを詳しく知らなくとも手元のデバイスから直感的に利用することができ、ユーザーとしては嬉しい限りです。その反面、実際に「サービスがどのように動いているのか」…

(注)上記の記事ではOS としてUbuntu 18.04を用いています。

Dockerの主要コマンドを理解しよう!

Dockerの概要

Dockerと言ってもその範囲は広く、全てのコマンドを一度に把握することはできません。まずは以下のようなDockerコンポーネント(構成要素)を大まかに理解してから、主要なコマンドを目的別に試してみることをおすすめします。

Dockerイメージ

Docker利用者向けに登録されているプログラムファイルです。サーバーの管理や運用で必要で、例えばCentOS やUbuntuそしてWordPressなど、広く利用されているLinux OSやアプリなどが含まれています。

Docker レジストリ

Dockerイメージの配布場所で、「Docker Hub」と呼ばれています。Dockerの利用時に「Docker Hub」へアクセスし、Dockerイメージを自由にダウンロード(Pull)できます。一部の機能(pushなど)を利用する場合は、「Docker Hub」に登録(無料)が必要です。さらにサービスの種類と規模により、有料プランも用意されています。詳しくは以下のページをご参照ください。

【「Docker Hub」についての参考情報】
(登録ページ) https://hub.docker.com/
(料金表) https://www.docker.com/pricing
(登録が必要な場合) https://docs.docker.jp/docker-hub/accounts.html

Docker コンテナ

Dockerイメージを起動すると、Docker コンテナが出来上がります。一つのDocker コンテナは通常では独立した環境として、他のコンテナとは隔離されています。そのため何か問題あっても、別のコンテナには影響は出ないため安心して利用できますね。

【参考情報】Docker 概要(公式)
https://docs.docker.jp/engine/understanding-docker.html

目的別の基本コマンド

Dockerのコマンド名は、Linux全体のルールをもとに命名されているので、理解しやすいと思います。それでは具体的にご説明しましょう。

(1)コンテナ操作用

共通ルール: docker container + コマンド名 + (コンテナ名など)
目的コマンド名実行例
コンテナの起動startdocker container start (コンテナ名)
コンテナの停止(より安全な方法)stopdocker container stop (コンテナ名)
コンテナの停止(強制的に停止する方法)killdocker container kill (コンテナ名)
コンテナの削除rmdocker container rm (コンテナ名)
コンテナの再起動restartdocker container restart (コンテナ名)
コンテナの一覧を表示lsdocker container ls -a [注]
Dockerイメージからコンテナを生成rundocker container run (イメージ名)

[注] 「-a」とは全て(all)を意味し、この場合は起動中だけでなく停止中のコンテナも一覧表示する指示内容です。

(2)イメージ管理用

共通ルール: docker image + コマンド名 + (イメージ名など)
目的コマンド名実行例
Dockerイメージ(最新版)を「Docker Hub」からダウンロードpulldocker image pull (イメージ名)
Dockerイメージの一覧を表示lsdocker image ls
Dockerイメージの削除rmdocker image rm (イメージ名)
Dockerイメージを「Docker Hub」へアップロードpushdocker image push (イメージ名)

(3)その他

目的コマンド名実行例
Dockerのバージョンを表示versiondocker version
Dockerイメージの検索searchdocker search (イメージ名)

【便利な機能】Dockerfileで自動化し共有する!

複雑で毎回繰り返す作業を自動化することが、Dockerに課せられた本来の役目です。具体的には、インストールや各種設定作業を自動で実行する仕組みがあります。その一つがDockerfileと呼ばれる、数行の命令(instruction)を記述したテキストファイルです。このDockerfileに実行指示をするだけで、あとは指示内容通りに自動で作業を進めてくれます。Dockerfile作成には、主に以下の命令(instruction)などを記述します。

目的命令(instruction)実行例
Dockerイメージの指定FROMFROM centos など
実行内容の指定RUNRUN yum -y install httpd など
docker run 時に実行するコマンドの指定CMDCMD [ここにコマンドを記述する]
公開するポートの指定EXPOSEEXPOSE 80 など

上記の表を使ったDockerfileの作成方法は、以下の通りです。

【コマンド例】

vi Dockerfile

【コマンド例】

FROM centos
RUN yum -y install httpd
EXPOSE 80
CMD [ここにコマンドを記述する]

最後に出来上がったDockerfileを「docker build」コマンドで実行しましょう。

【コマンド例】

docker build -f (Dockerfileの保管場所).

(注)「-f」を付けることで、使用するDockerfileを指定できます。

【参考情報】Dockerfile リファレンス(公式)
http://docs.docker.jp/engine/reference/builder.html

まとめ

Dockerは決して難しくありません。まずは体系や考え方を理解して、コマンドを少しずつでも実行してみましょう。カゴヤのサーバー研究室では、Dockerを始めるための連載ページを公開しています。本記事とともにぜひご活用ください。

Docker を使って コンテナ仮想化を体験する

Docker を使って コンテナ仮想化を体験する

カゴヤのVPSでは CentOS や Ubuntu、Windows などのOSに加え、必要なパッケージがインストール済みのテンプレートも用意されています。テンプレートを使うことで、面倒で複雑な環境構築作業を大幅に削減することが可能です。利用目的に合わせた環境を簡単に素早く構築できるため、学習や開発・テストなど、やりたいことをすぐに始められます。また日額料金で使い始めることができるので、少しだけ環境…

Dockerを使うためには、すぐ自由に利用できるサーバーが不可欠です。日額20円~の低価格で使えるカゴヤ・ジャパンの「KAGOYA CLOUD VPS」プランがおすすめです。Docker環境を簡単に構築できるテンプレートも選択可能です。

KAGOYA CLOUD VPS
https://www.kagoya.jp/cloud/vps/template/