#はじめに
プログラミングを学習していると、Dockerってよく聞きます。
就活するうえでDockerは必須スキルみたいで。何ができるのかを勉強しながら少しずつアウトプットできたらと思います。
#Dockerとは何か
- コンテナ型仮想環境を作成、実行、管理するためのプラットフォーム
- Dockerのソフトウェアを使って素早くコンテナ起動し、様々なアプリケーションを実行することができる
- 異なる環境(PCやサーバ)で簡単に同じ仮想環境を再現できる
- Dockerのソフトウェア自体はGo言語で書かれている
・コンテナとは一種の仮想環境のことです。PCやサーバー上にコンテナを作成して、そのコンテナの中でプログラムを実行することができます。
###例えば
Pythonのアプリケーションを実行したい場合は、Pythonがインストールされたコンテナを使えば即座にPythonアプリケーションを実行して動作を確認することができる。
このように用途に合わせたコンテナを起動することで様々なアプリケーションを素早く実行できるのがコンテナ型仮想環境の特徴です。
また異なるPCやサーバで同じ環境を再現したい場合、dockerの設定ファイルを共有することで簡単に同様の環境を構築することができます。
これは開発チームのメンバー間で同じ環境を用意する際に重宝されます。
あとdockerのソフトウェア自体はGo言語で書かれています。普段はそれほど気にすることでもないのかもしれませんが、dockerコマンドの出力形式を指定する場合にGoテンプレートの書式を使用するなど多少Go言語に慣れておくと使いやすい面もあるのかなと思います。
#Dockerはどういう用途で使われる?
- アプリケーション開発環境
- 検証環境、本番環境
- Webサーバ、データベースサーバなどの構築
- 各種プログラミング言語の実行環境
- その他様々なミドルウェアの環境構築
###アプリケーション開発環境
プリケーション開発環境は開発者個人個人のPCで開発中のアプリケーションを動かす時に使われるケースです。
Webアプリケーションのプロジェクトでは、ほとんどの企業で使われているのではないかと思うほど普及しています。まずプロジェクトに入った時に自分のPCにdockerで開発環境を構築するというケースがかなり多いので、開発者の方は基本的な使い方を習得しなければいけないと思います。
###検証環境、本番環境
検証環境、本番環境は各開発者が作成したアプリケーションをサーバで動かす際もdockerが使われるということです。
アプリケーション開発では開発者のPCに開発環境を用意してアプリケーションを開発します。
アプリケーションが出来上がったらそれをdockerイメージという形で環境とアプリを一つの塊にまとめます。それをdockerリポジトリと呼ばれるイメージを管理するサーバにアップロードします。
そのイメージをほかのサーバでダウンロードしてイメージからコンテナを起動することで基本的には開発したときと同じ環境をサーバ上でも立ち上げることができます。
dockerではこの開発からサーバで稼働するまでの流れを素早く行えることが一つのメリットとなっています。
検証サーバとは一般的に本番リリース前に本番同等の環境で動作確認をするためのサーバで、本番サーバとは実際にユーザーからのアクセスがあるサーバを言います。
一般的なwebアプリケーション開発では、このように開発PCで開発し、できあがったものを検証サーバで動作確認して、問題がなかったら本番サーバにリリースするといった一連の流れを繰り返すことで開発が進むみたいです。
###Webサーバ、データベースサーバなどの構築
Webサーバにはnginx,Apache。データベースサーバにはMySQL,PostgreSQLなど一般的によく使われるものもdockerを使うことで簡単に立ち上げることができます。これらのサーバをコンテナとして作成するために公式に公開されているdockerイメージがあり、このイメージを使うことで簡単にサーバ用途のコンテナを立ち上げることができます。
###- 各種プログラミング言語の実行環境.その他様々なミドルウェアの環境構築
プログラミング言語の実行環境やその他のミドルウェアも同様にdockerイメージが幅広く公開されているので、これらのイメージを使えば様々なコンテナを立ち上げるのが可能になります。
どのようなイメージが公開されているかは、主にdocker hubと言われる、dockerで運営されているサイトで確認することができます
#おわりに
ざっくり説明でした。
Dockerについては、これからどんどん勉強して記事を載せていこうと思います。
間違っている説明がありましたら、コメントで指摘してくださると幸いです。