Dockerを始めてみよう!(インストール~コンテナ立ち上げ)

By | Date : 2018/07/10 ( Last Update : 2018/07/11 ) | 19 views

カテゴリ : Docker Web開発 タグ: , ,

こんにちはー、ニアです。

 

最近私は、インフラ周りの勉強の一環としてDockerを使って、ゲームの開発環境をPCのみで構築したり、まだ使ったことのないミドルウェアを使ってみたりしています。

今回はDockerをインストールして、コンテナをいくつか立ててみました。

 

1. Dockerとは

Dockerとは、Docker社が開発しているオープンソースのコンテナ型の仮想化ソフトウェアです。

コンテナ型の仮想化は、実行環境を他のプロセスから独立した1つ1つプロセスとして動作します。

ホストOS型やハイパーバイザー型と違って、コンテナ型はOSの起動が不要だから、起動が速くて消費リソースも少なめです!

 

2. Dockerをインストールしてみよう

ここではMacにDocker for Macをインストールしていきます。

Docker for Macではxhyveという仮想化機能を利用するので、Mac OS X 10.10 Yosemite以上であればOK!
(ちなみにWindows版の場合、Hyper-Vが利用可能なWindows 10 Pro(64 bit版)以上が必要です)

DockerのサイトからダウンロードしたDocker.dmgをマウントし、Docker.appをアプリケーションフォルダにコピーするだけ。

 

3. Dockerを起動

Dockerを起動し、Macのメニューバー上にあるDockerのクジラアイコンのアニメーションが止まったら準備完了です。

あとは基本的にターミナルからdockerコマンドを利用していきます。

 

docker versionコマンドを実行すると、Dockerのバージョン情報が表示されます。

 

4. Dockerイメージからコンテナを建ててみよう

Dockerでは、多くのコンテナ用のイメージがDocker Hub上にあり、UnuntuなどのOSイメージやApache、PHP、MySQLなどのミドルウェアのイメージがあります。

ここでは、UbuntuApacheMySQLPHPのイメージをダウンロードしてコンテナを建てていきます。

 

4.1. Ubuntu

まず、docker pullコマンドでUbuntuイメージをダウンロードします。

次に、docker runコマンドで先ほどダウンロードしたUbuntuイメージからUbuntuコンテナを構築します。

nameオプションでコンテナに名前をつけることができます(ここでは「test」)。
itオプションはホストの標準入出力とDockerコンテナの入出力を繋げます。
さらにイメージ名の後に「/bin/bash」を付ければ、Dockerコンテナの構築後、ターミナルからUbuntuコンテナをBashで操作できるようになります。(コンテナから抜ける時は、exitを実行します。)

なお、指定したイメージがローカルにダウンロードされていない場合、イメージもダウンロードされます。

 

4.2. Apache

お次はHTTPサーバーのApacheです。

dオプションを付けるとコンテナはバッググラウンドで動作します。
pオプションを使って、ホスト側の80番ポートとコンテナ側の80番ポートをマッピングさせることで、ブラウザから「localhost」でコンテナのWebページにアクセスできます。

バッググラウンドで動作しているコンテナを起動する時は、docker startコマンド、停止する時は、docker stopコマンドを実行します。

またコンテナをアタッチして操作する時は、docker execコマンドを実行します。

 

4.3. MySQL

今度はデータベースのMySQLです。

MySQLではコンテナの構築時に、MySQLのrootユーザーのパスワードを設定する必要があります。そこで、eオプションを使って環境変数MYSQL_ROOT_PASSWORDにパスワードを設定します。

また、イメージ名にタグ名を併記することで、そのタグに紐づいたイメージを指定することができます(ここでは、MySQL 5.6のタグを指定します)。タグ名を省略すると、デフォルトとして「latest」タグが指定されます。

最新のMySQL 8.0では、デフォルトログイン認証方式が変わっていて、上のdocker runコマンドではログイン失敗してしまうんだ

ホスト側のポートにマッピングしておくと、MySQLクライアントアプリでもアクセスできますよ!
(画像は、Sequel ProでMySQLコンテナに接続したものです)

ホストは「127.0.0.1」、ユーザー名は「root」、パスワードは「password」を入力します。
ポート番号はデフォルトでは3306が指定されます。

mysql.help_topicテーブルの中身

 

4.4. PHP(on Apache)

最後はPHPです!

気をつける点は、ホスト側のポートが他のものと重複しないように設定することです。4.2節のApacheコンテナですでに80ポートを使用しているので、ここでは8080番ポートを指定します(Jenkinsおじさんとダブっとるがな・・・)。

PHPのイメージはいくつか種類があり、コマンドラインから実行するcliタグ(タグ名を省略した時のデフォルトはこちらです)や、Apacheサーバー上で動作するapacheタグなどがあります。

 

コンテナを建てたばかりでは、ブラウザからアクセスしてもHTTP 403エラーが返るだけなので、コンテナにアタッチして「phpinfo();」を呼び出すPHPプログラムを作成してみます。

これで、localhost:8080にアクセスすると、PHPの情報が表示するようになります。

 

5. おわりに

今回は、Docker for Macをインストールし、Docker Hub上のイメージを使って、いくつかコンテナを建ててみました。

もちろん、イメージをそのまま使うだけでなく、Dockerfileを使ってカスタマイズしたり、Docker-composeを使って複数のコンテナをまとめてWebアプリを構成したりすることができます。(今度紹介していきますね)

それでは、See you〜!

 

この記事をシェアする
Chronoir.netのRSSフィードを購読する

About : ニア(Nia)

紅茶とコーヒーが好きな湘南生まれのプログラマー/ITエンジニアです。主にC#/C++/PHPを使ってプログラミングをしています。趣味は写真撮影と音ゲーです。時々イラストを描いています。プログラミングを勉強している方々と仲良くなりたいです! 興味を持っている分野:UWP/Xamarin/Android Wear/WPF/Windows/Visual Studio/WordPress/KUSANAGI/nginx

コメントを残す

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

*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください