はじめに
実務でFunctionsからCloud Runを入れるかも?という話がチームの中であがり、
その前提知識となるDockerコンテナの基礎知識を学ぼうと思い、Dockerを勉強し始めた。
まずは
- Dockerfile, Docker-compose.yml を使って、ローカルに環境を構築できること
を目標に学習した。
※個人ブログから技術的アウトプットはQiitaへ引っ越ししたので、こちらは過去に書いたブログとなります。
Dockerとは
いろんな切り取り方で定義が様々あるが、こんな感じで理解
Dockerとは、Docker社が開発しているコンテナ型の仮想環境を作成、配布、実行するためのプラットフォーム。
その他、以下で理解
- Linuxのコンテナ技術を使ったもの
- ミドルウェアのインストールや各種環境設定をコード化して管理
- ソフトウェア開発で実施されてきた構成管理や自動化などを、サーバーの各種設定やミドルェアのインストールなどにも適用したもの
- 仮想化技術の1つ
仮想化とDockerとVM
- 仮想化とは、サーバーの中にあたかも違うOSのサーバーが入っているように見える技術。
- Docker以前にVMという仮想化技術が人気に。
では、DockerとVMは何が異なるのか??
一番の違いは
サーバー仮想化(VM)では、各OSを立ち上げて各アプリケーションを動かしている のに対し,
コンテナ仮想化(Docker)では、各仮想マシン毎にOSを立ち上げておらず、各仮想マシンがホストOSのカーネルを共有している。
結果、Dockerは従来のVM(サーバー仮想化)より軽量で省エネな仮想化を実現できている。
コンテナとは
めちゃくちゃ意訳すると
ある前提となる状態のもとで、あるコマンドを叩いたときに発生する処理の内容を再現するもの
例えば、このコンテナという技術を使えば、環境構築、コードの実行を行うことができる。
結果、下記に詳細を書くが、PCが異なっていてもAさんとBさんはコンテナを共有することで同じ環境でコンテナを立ち上げて、そのコンテナ上で開発ができるようになる。
便利そう...!
図イメージ
Dockerのメリット -できること-
- コード化されたファイルを共有することで、どこでも誰でも同じ環境が作れる
- 作成した環境を配布可能
結果、作成したDockerイメージを他の人にも渡して使ってもらうことで、
各自の環境のバージョンずれ防止や、開発環境準備の短縮化にもつながる。
また、チーム開発では新規メンバ参画時のコスト削減や、環境依存問題を減らせる。
Dockerのインストール
こちらで。
まとめ
- Dockerとは、Linuxのコンテナ技術を使って
コンテナ型
の仮想環境を作成、配布、実行するためのプラットフォーム。 - 仮想化とは、サーバーの中に違うOSのサーバーが入っているように見える技術。
- Dockerのメリット複数あるが、従来の仮想技術よりも軽量で、作成したDockerイメージを他の人にも渡して使ってもらうことで、各自の環境のバージョンずれ防止や、開発環境準備の短縮化にもつながること。
基礎操作verはこちら