# Dockerとは何ぞや? ## はじめに ※この記事は[茨大 Advent Calendar 2020](https://adventar.org/calendars/5043) 21日目の記事です。 はじめまして、昨年度情報工学科を卒業した者です。 なんとか就職が決まり、現在はソフトウェア開発の業務を行っております。 しかし業務の中で「何それ知らん」といった技術が出てくるので、たびたび勉強する機会があります。新人は大変ですね、頑張ろう。 この記事は「何それ知らん」の1つであった**Docker**について雑に理解を整理して、概要的なものを書ければいいなと思っております。 <span style="color: gray; opacity: 0.3;">深くつっこんだ内容はあまり書けないので悪しからず</span> ## Dockerとは何ぞや? ![image docker](https://www.docker.com/sites/default/files/social/docker_facebook_share.png) 開発工程において、開発環境、検証環境、本番環境など複数の環境で動作させますが、それぞれの環境でのOS環境やライブラリ等の違いで正常にソフトウェアが動作しないといった問題が出てくる可能性があります。 Dockerを使うことの大きなメリットとして、環境を変えても正常に動作できる可搬性があるといった点です。これは**コンテナ**と呼ばれる技術を用いてカプセル化した環境の作成、動作を行うことで実現させています。 ... なんだかコンテナって仮想化みたいって思いませんでした?思いましたね? ざっくりと違いと説明しますと、仮想化ではホストOS上で仮想化ソフトウェアの起動、その上でゲストOSを動かしてアプリケーションを動作させますが、コンテナだとそれらを必要とせず、仮想化に比べ起動が軽量なのです。すごい。 本来コンテナの作成には色々と手順が必要なのですが、Dockerは簡単にコンテナの作成をしてくれます。 ## コンテナの動かし方 基本的に「Dockerイメージ」というものを作成し、そこからコンテナを作成するという流れです。 Dockerイメージはコンテナを作る元のようなファイルであり、コンテナ実行に必要なOSや設定の情報を持っています。[Docker Hub](https://hub.docker.com)から既存のイメージをプルしたり、自分で作成したりすることができます。 そしてDockerイメージからコンテナを動かすのですが、Dockerのコマンド1行で済むのでとっても楽なんですよ〜 ## 結局、Docker使って何が良くなるの? ダラダラと説明してきましたが、Docker使うことのメリットとは何なのか?それは環境構築に必要な情報を、Dockerイメージという形で配布できることにあると思います。 チーム開発において、メンバー全員にDockerイメージとして開発環境を配布する、環境を含めた情報を納品するといったことが可能になることで、環境構築のミスを防ぐ、ミスの対応の手間が減るといったメリットがあります。 余談ですが、自分が配属されたチームでDockerを使っての開発を行なったのは今回が初めてだったのですが、納品から3ヶ月経過時点で環境周りに関する問い合わせはありませんでした。**ありがとう、Docker。** ## 終わりに Dockerの紹介をさせていただきました。文章書くの苦手すぎて内容が全然纏まってない気がします...。ざっくりとした説明しか書けませんでしたが、「こういうのがあるんだ〜」くらいに思っていただければ幸いです。 駄文にお付き合いいただき、ありがとうございました。 ## 参考文献 詳しい説明等はぜひ下記を参考に。 ・[【連載】世界一わかりみが深いコンテナ & Docker入門 〜 その1:コンテナってなに? 〜](https://tech-lab.sios.jp/archives/18811) ・[Docker入門(第一回)~Dockerとは何か、何が良いのか~](https://knowledge.sakura.ad.jp/13265/)