Help us understand the problem. What is going on with this article?

今日から始めるDocker【基礎概念編】

More than 1 year has passed since last update.
  • 基本的にはRuby/Node.jsなどのサーバーサイドを中心にお仕事していますが、あるきっかけでプロジェクトへのDocker導入のお手伝い(自分もこの際に初めてDocker触ったんですが...)をさせていただきました。
  • 少しでも後世の役に立てばと思い、学んだことをまとめました。
  • なお、当方は正確な言葉や用語よりもイメージを重視しているので、そこの辺りは優しく読んで頂けますと幸いです。

対象読者

  • まだDockerに触れたことがない人
  • Dockerをこれから使いたいなーと思っている人

記載していること

  • Dockerの概念とか

関連記事

目次

  • Dockerとは
  • Dockerのメリット
  • Dockerの原則

Dockerとは

  • コンテナ型仮想環境を作成、配布、実行するためのプラットフォーム。
  • Docker社が開発を始め、2013年にオープンソースのプロジェクトとして公開されています。

Docker公式サイト(英語)

コンテナとは

  • ホストマシン(例: お手元のpc)のカーネル(OSのコア的なやつ)を利用して作成し、ホストマシンのプロセスやユーザーとは隔離された領域のこと。
    • ホストマシンのOSの力を借りて、その上にホストマシンとは別の世界を作るイメージ。

Dockerを使うメリット

1.軽量なホストマシン上で隔離された環境を利用できる

従来までの仮想化環境

  • VirtualBoxなどの従来の仮想化環境ではホストOSの上でHypervisor(仮想化環境を作るための制御プログラム)を利用してゲストOSを動かし、その上にミドルウェアなどを動かしていました。
  • この方式では、pcの中に別のpc環境を丸ごとインストールする感じなので、非常に重たい!

Docker

  • Dockerはホストマシン(例:お手元のpc)のカーネルを利用してその上にコンテナを起動するので、仮想化環境に比べて起動や停止が軽量である。

  • イメージ図

Dockerと仮想化環境の違い.png

2.どこでも同一環境を作れる

  • DockerコンテナはDockerfile(コンテナの設計図)上の情報を元に作成されるので、環境設定をコードとして管理できる。
  • そのためどの環境(Mac/Windows/Ubunt etc.)でも、同じ環境設定を同じ手順で実行できる。
    • 利用者の環境ごとにバージョンや設定情報が異なる、という事象を回避できる。

3.スクラップ&ビルドが簡単

  • dockerコマンドを使用することでdockerコンテナのbuild/up/killなどが簡単にできる。
  • また、立ち上げる際には真新しい環境で立ち上がるので、作業中に環境を汚してしまってもすぐに綺麗な環境が手に入る

Dockerの原則

  1. 1コンテナにつき1プロセス
    • 1つのコンテナ内に複数プロセス(例: Rails, nginx, MySQL)を詰め込むと、コンテナの再起動などが気軽にできない
    • Railsのコード直してコンテナを再起動する場合には、他のプロセスも再起動する必要がある
  2. コンテナ内で完結させる
    • 使用するミドルウェアやツールなどはすべてホスト側ではなくコンテナ上で管理すること 
    • これにより、バージョンアップやメンテはDockerfile上で管理できる

参考文献

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away