0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

やっとDockerについて調べた

Last updated at Posted at 2021-11-08

Dockerとは?

Docker社が開発している、
コンテナ型の仮想環境を作成、配布、実行するための
プラットフォームです。

Dockerは、Linuxのコンテナ技術を使ったもので、
よくVirtualBoxなどの仮想マシンと比較されます。

仮想化環境とDockerの違い

仮想化環境でも大きく3つの型に分けられます。

  • コンテナ型
  • ホスト型
  • ハイパーバイザー型

Dockerはコンテナ型にあたります。

コンテナ型

image.png

メリット

  • 起動が早く、処理が軽量、使用メモリがすくない
  • 環境構築が容易

デメリット

  • Linuxのコンテナ機能を用いているため、カーネルベースのOSじゃないと使えない
  • ハイパーバイザー型と比べて分離レベルが低い、コンテナ型はホストOSの1プロセスとして動作するため
    他コンテナの影響を受けやすい

※ 補足
WindowsやMacでDockerを動かせるのだが、
厳密には、準仮想化技術を用いて裏でLinuxを動かしているそうです。
参考

ホスト型

image.png

メリット

  • ホストOSとは別に任意のゲストOS(WindowsやMacOS)を起動することができる

デメリット

  • ホストOSに負担がかかると、仮想マシンのパフォーマンスに影響がある
  • Vmware等の専用のソフトウェアが必要

ハイパーバイザー型

image.png

メリット

  • ハイパーバイザー型はハードウェアに直接インストールするため、
    ホスト型のようなOSの成約を受けない

  • 異なるOSを並列に実行することが可能

デメリット

  • 専用のハードウェア、ソフトウェアが必要
  • コンテナと比較すると、一台あたりのリソース消費が多く、起動に時間がかかる

Dockerをプロジェクトに導入するメリット

  • Dockerfile でインフラの作業をコードで管理できるので、
    手順書作成等の時間を減らせる

  • 複数人で開発する際に、環境の差が生まれない

  • スクラップ&ビルドが容易なので、
    環境を壊してしまってもすぐに直せる。

  • 依存関係ごとバージョンの切り替えが容易なので、
    DB等のミドルウェアのバージョンを変えて動作確認などが簡単

Dockerをプロジェクトに導入するデメリット

  • ホストOSがLinuxでないとDockerは使えない

  • 結局は、MacやWindowsでDockerを使うには専用の
    アプリケーションが必要

  • コンテナを立ち上げるまでは学習コストは低いが、
    環境構築や運用となっていくと学習コストが高くなりがち

Dockerを使ってMySQLサーバを立ててみる

構成は下記のようになりました。
image.png

docker-compose.yml

docker-compose とは
複数のコンテナを操作するのに使用するDockerの機能です。
コンテナ毎のPORTの指定や、Dockerfileの場所等の設定を記載します。
image.png

Dockerfile

Dockerfile とは
コンテナ単体に対して設定や起動時にどのコマンドを実行したり、
使用するバージョンを記載します。
image.png

test-ddl.sql

SQLのCREATE文が書いてある普通のDDL
image.png

Dokcerの起動

# 起動
docker-compose up -d

image.png

# コンテナが起動しているか確認
docker ps

image.png

MySQLへの接続

# コンテナへ接続
docker exec -it docker-mysql_mysql_1 bash -p

# MySQLへ接続
mysql -u root -p -h 127.0.0.1

image.png

SELECT句でデータを確認
select * from key_val;

image.png

実際にDockerを触ってみた感想

ローカルの環境に様々なミドルウェアやツールを入れて開発をしていくと、
以前入れていたミドルウェアとの競合や別バージョンのミドルウェアの入れ替えなどを行うと環境が汚染されてOSを入れ直すことが度々ありました。
しかし、Dockerを触ってみて、環境の構築・削除が高速で煩わしい初期設定をしなくて良くなったのが魅力的でした。
ただ、開発をする上で必須なスキルかと言われると半々な気がしますが、
インフラに関する作業が多いなら、覚えておいて損がないと思います。
情報についてはあまり見つからず(探し方が悪い?)、
英語で記載されたドキュメントと向き合う必要があるので、
学習コストがやや高い印象を受けました。

さいごに

Dockerのクジラの名前は “Moby Dock”(モビードック) と言うそうです。

image.png

普段はエラーが出ると超絶イライラするのですが、
クジラさんの表情が可愛いので許してしまいます。
しかし、結局はエラーなのでやっぱりちょっとイライラします。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?