Dockerとは

Dockerとは 「OSの上に別のOSを動かせる仕組み」です。 正確には違いますがWindows上でLinuxを動かしたりできるので、まずはそんな認識でいいんじゃないかなと思います。

一応Wikipediaで見てみると以下の様にありますが、より詳しいは説明はググれば山ほど出てきますので細かい説明は省略し、どんなことが出来るのか簡単に紹介します。

Docker(ドッカー)は、コンテナ仮想化を用いてアプリケーションを開発・配置・実行するためのオープンソースソフトウェアあるいはオープンプラットフォームである。

Dockerはコンテナ仮想化を用いたOSレベルの仮想化(英語版)によりアプリケーションを開発・実行環境から隔離し、アプリケーションの素早い提供を可能にする。かつその環境自体をアプリケーションと同じようにコード(イメージ)として管理可能にする。Dockerを開発・テスト・デプロイに用いることで「コードを書く」と「コードが製品として実行される」間の時間的ギャップを大きく短縮できる。

Wikipedia

用語紹介

まずはDockerで基本となる3つの用語について紹介します。

Dockerfile

OS情報などをコードで表現したテキストファイルです。基本的にファイル名は「Dockerfile」固定です。拡張子も無し。

以下のコードはDockerfileの例ですが、これをテキストとして保存してDockerで使うとnginxのイメージファイルをダウンロードして、そのイメージファイルの中にhoge.htmlというファイルを作成してくれます。

nginxのイメージファイルはDocker HubというWebサービスからダウンロードされます。

イメージファイル

Dockerfileの情報を元に作成されたOSのデータです。多くの場合Docker HubというWebサービスからダウンロードします。これを元にコンテナを起動します。

コンテナ

イメージファイルを元に起動されたOSです。一つのイメージから複数のコンテナが起動できます。

実行してみる

どこか適当に作業用フォルダを作成し、先ほどの例と同じように以下の内容が書かれたテキストファイルをDockerfileという名前で作成します。ここではC:\docker\test\Dockerfileとします。

次にコマンドプロンプトを起動して、作業用のフォルダに移動し以下のコマンドを実行します。最後に付けるピリオドに注意してください。このコマンドでDockerfileという名前のファイルを探し、そのファイルの情報を元に「testimg」という名前でイメージファイルが作成されます。

C:\docker\test>docker build -t testimg .

大体こんな感じの結果が出力されます。

イメージファイルが作成されましたので、これを元にコンテナを起動します。以下コマンドを実行します。8080番ポートをコンテナの80番ポートに紐づけてtestcontainerという名前でコンテナが起動されます。

C:\docker\test>docker run -d -p 8080:80 --name testcontainer testimg

試しにhttp://localhost:8080/hoge.htmlにアクセスしてみると以下の様に作成したhtmlファイルが表示されます。

後始末

今回作成したイメージファイルやコンテナは不要なので以下のコマンドで削除しておきます。

コンテナの停止

docker container stop testcontainer

コンテナの削除

docker container rm testcontainer

コンテナの削除の確認

docker container ls

イメージファイルの削除

docker image rm testimg

イメージファイルの削除の確認

docker image ls

まとめ

こんな感じで簡単に環境を構築・破棄することが出来るのがDockerのいいところです。

今回は簡単なイメージファイルを作成し、Webサーバーの起動を確認しただけでしたが、実際はパッケージマネージャを使ってアプリのインストールをしたり、設定ファイルを編集したり、コンテナを複数立ち上げてコンテナ間で通信できるように設定したりと様々な処理を実施します。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です