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サービスからダウンロードされます。
1 2 3 |
FROM nginx RUN echo hello world!>/usr/share/nginx/html/hoge.html |
イメージファイル
Dockerfileの情報を元に作成されたOSのデータです。多くの場合Docker HubというWebサービスからダウンロードします。これを元にコンテナを起動します。
コンテナ
イメージファイルを元に起動されたOSです。一つのイメージから複数のコンテナが起動できます。
実行してみる
どこか適当に作業用フォルダを作成し、先ほどの例と同じように以下の内容が書かれたテキストファイルをDockerfileという名前で作成します。ここではC:\docker\test\Dockerfileとします。
1 2 3 |
FROM nginx RUN echo hello world!>/usr/share/nginx/html/hoge.html |
次にコマンドプロンプトを起動して、作業用のフォルダに移動し以下のコマンドを実行します。最後に付けるピリオドに注意してください。このコマンドで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サーバーの起動を確認しただけでしたが、実際はパッケージマネージャを使ってアプリのインストールをしたり、設定ファイルを編集したり、コンテナを複数立ち上げてコンテナ間で通信できるように設定したりと様々な処理を実施します。