オオイシdockerツイートシェアはてブ送るPocketこんにちは!システムエンジニアのオオイシです。Dockerをご存知ですか?Dockerとは、非常に軽量なコンテナ型の仮想化環境です。破棄して再利用がカンタンサーバーのスケール(サーバーの台数の増減)も簡単に設定できるなどの特徴があります。そのため、ベテランエンジニア開発環境の構築にもう3日もかかった。テスト環境で動いたのに本番環境でエラーが発生した!?年末のイベントで急にサーバーの増強が必要だけど、そんな予算はない!なんてことは、Dockerを使うと無くなるかもしれません。そんな、Dockerの使い方の基礎についてわかりやすく解説していきます。まとめDockerとは?Dockerとは、コンテナ型の仮想化環境のことです。Boxなどのホスト型の仮想化技術と比較すると、仮想的なハードウェア上にLinuxなどのOSをインストールして動作させる方法では、本来必要のないプロセスを実行するオーバーヘッドが必要になるため、起動が遅いしメモリなどの資源もたくさん使います。Dockerの場合は、Linuxのカーネルのコンテナ技術を使って、ホストOSから直接1プロセスで実行するため軽量です。Engine上で動作するアプリケーションの単位を、コンテナ(Container)と呼びます。コンテナ(Container)とは、Apache・MySQLやシェルのコマンドなどのアプリケーションをラップする入れ物と考えるとイメージしやすいかもしれません。次項では、そんな、Dockerを体験してみましょう!Dockerをインストールまず、はじめにDockerのインストールをします。難しい手順はないため、公式サイトしたがってインストールしてください。Windowshttps://docs.docker.com/docker-for-windows/install/インストールが完了して、起動するとこのようにかわいいアイコンが表示されます。次項では、Dockerを体験する方法について解説していきます。コマンドで表示するサンプルについて解説していきます。run」コマンドを使います。Docker実行の元となるファイル。コンテナ(CentOS7)に渡すコマンドそれでは、実行してみましょう。World“が表示することができました!初回はちょっと時間がかかりますが、これは、CentoOS7のイメージをダウンロードするためで、2回目から早く起動することができます。Worldこのように、2回目以降は、ローカル環境のDockerイメージがキャッシュされるので、結果のみが表示されます。次項では、Dockerでどのように実行されたか解説します。World“を表示するサンプルを実行してみました。World”をどのようにして表示しているのかの概要を解説します。大まかには、ローカル環境にCentoOS7のdockerイメージ(アプリ実行の元ファイル)があるかを確認して、なければネット経由でダウンロードするCentoOS7のDockerイメージからのコンテナを作成するコンテナからechoコマンドを実行するのような流れになります。dockerコンテナはdockerイメージのスナップショット(ある時点のコピー)です。World”」コマンドの差分のみを情報なので、起動がとても早くてファイルサイズも小さくなります。World”」ホストOSから直接起動するので、起動がとても早いのです。大まかな仕組みを理解いただけたと思うので、次項では、特に重要な用語について解説していきます。Dockerでよく出てくる用語よく使われるDockerの用語について簡単にまとめておきます。ImageDockerイメージはコンテナを動かすためソフトウェア元ネタです。アプリケーションのファイル構成、実行の方法、ミドルウェアなどの情報が入っています。ContainerDockerがアプリケーションを実行するための最小単位の入れ物です。Containerです。Registory(イメージの公開と共有)Dockerイメージの公開・共有するためのレジストリです。HubのDocker版のイメージです。Composeは、複数のコンテナを一元管理するための仕組みです。DockerコンテナはWebサーバーやデータベースを1つの単位とした入れ物ですが、それ単体では、アプリーションとして機能使うことは稀で、例えば、WEBサーバーDBサーバーアプリケーションサーバーKVMログ収集など、それぞれのアプリケーションを連携する場合に、構成情報を管理します。Machine(クラウドを含む実行環境)Dokerコンテナを実行する環境をAWS、Azuru、GCPなどのクラウドなどに自動構築するためのツールです。Kubernetes(オーケストレーション)Kubernetes(クーバネティス)とは、Googlesが手動で開発を進めるオーケストレーションツールです。オーケストレーションツールとは、分散環境などで、サービス全体のデプロイや実行を自動化するための仕組みです。一時的なサーバー負荷が発生した時に自動的にサーバーをスケールアップしたり、システム開発のデプロイの自動化などに役立てます。まとめいかがでしたか?Dockerは軽量なコンテナ型の仮想化環境です。Dockerを使うとアプリケーションの起動が早く、メモリやディスクなどの資源も少なくて済むなどの特徴があります。この記事を機会にDockerについて勉強してみてはいかがでしょうか!?dockerdockerツイートシェアはてブ送るPocketFOLLOWTwitterシステムの相談したいんだけど。【AWS】CodePipelineでRailsのCI/CD環境を構築。Reserved.Translate。