「Dockerfileの作り方って、どうやるんだろう?」
「少し調べてみたけど、よく分からないな?」
って思いますよね?
っていうか私がそうでした・・・?
そこでDockerに詳しくない人でもわかるように画面ハードコピーつきで手順を紹介するのでぜひ読んでみてください!!
Dockerfileの作り方としては、最初にベースとなるコンテナを作成。
次に1つずつやりたい事をコマンド実行、確認して最終的にDockerfileに記載するコマンドリストを完成させます!
※PCはMacですが、Windowsでもコマンドは変わりません。
はじめに:Dockerfileで何が出来るのか?
自由にイメージを作成することができます。
イメージとはOS+ミドルウェア+設定のことです。(素のOSのみでもOK)
OSはCentOSでApacheとJavaとGitをインストールして環境変数を設定してという感じです。
このOSからミドルウェア、設定までをDockerfileに記載することでコマンド1つで仮想環境を構築することができるんです。
つまり、あなたが必要な環境をDockerfileに書き込むことで、自由に環境を構築することができる。
ステップ1:ベースのコンテナ作成
まずはDockerfileを作成します。
デフォルトはDockerfileというファイル名で作成しますが、今回は別の名前で作成します。
「CentosDockerfile」というファイル名で作成しました。
gist04c44c14bb89e4fc2c980c8d5241f54d
“FROM centos:7″の1行だけを記載し、CentosDockerfileというファイル名で保存して下さい。
次にこのDockerfileを使いcentosという名前でビルド(イメージを構築)します。
【コマンド】
docker build -t centos – < CentosDockerfile
ステップ2:Dockerfileに記述したいコマンド確認
次はビルドしたイメージでコンテナを起動し、インストールしたいコマンドを1つずつ確認して行きましょう。
コンテナ作成、起動、接続
コンテナの作成、起動、接続です。
【コマンド】
docker run -it –name コンテナ名 IMAGE名
このコマンドでWebAppという名前のコンテナを作成し、起動、接続しました。
コマンド確認
まず最初にyumをアップデートする必要があります。
普通のWindowsパソコンをイメージしてもらうとわかりやすいですがパソコンはまずWindowsがインストールされて、それからお店で売られて人の手に渡るまでに数週間から数ヶ月間が空きます。
そうするとその間にたくさんのWindowsアップデートが発生しますよね。
そのアップデートを更新する作業です。
【コマンド】
yum -y update
はい、これで事前準備は完了なので後はこのコンテナに導入したいものや、設定を1つずつコマンド実行していき、実行したコマンドをエディタに保存して下さい。
今回はNginx(エンジンエックス)をインストールして自動起動するようにしてみます!
まずはNginxのインストールです。
【コマンド】
yum -y install nginx
あれ?
エラーが発生しました。
“nginx Error: Nothing to do”でGoogle検索するとnginxのリポジトリが登録されてない事が原因です。
そこで、リポジトリ登録します。
【コマンド】
rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
もう一度チャレンジ(yum -y install nginx)すると今度はちゃんとインストール完了しました。
最後はnginxを起動します。
【コマンド】
/usr/sbin/nginx
ここまでnginxのインストールと起動は問題なく完了したのでエディタにそれぞれ書いておき、exitコマンドでLinuxから抜ければコンテナが終了します。
ステップ3:エディタのコマンドをDockerファイルに書きこむ
確認したコマンドをDockerファイルに記載しましょう!
gist0281bde1ab3ccab881e0114929e44352
※2018年2月12日修正(nginx起動を自動起動に変更)
Dockerfileの記載方法詳細についてはDocker日本語の公式ドキュメントを参照ください。
Dockerfile を書くベスト・プラクティス — Docker-docs-ja 1.12.RC2 ドキュメント
※ちなみに、14行目の”EXPOSE 80″は80番ポートでリッスンする事をDockerに伝えています。
コンテナ側は80番ポートを開けておき、docker runでコンテナ起動する時にホスト側は8080番ポートを指定するようにします。
さて、作成したDockerfileを使ってコンテナを作成するので先程作成したコンテナは一旦削除します。
【コマンド】
docker rm コンテナ名(もしくはコンテナID)
確認:作成したDockerfileでコンテナ起動
それでは、作成したDockerファイルでコンテナを起動してみましょう!!
最初にビルドします。
【コマンド】
docker build -t centos – < CentosDockerfile
しばらく(1分弱)待つと・・・
ビルド完了です!!
いよいよ起動です!
【コマンド】
docker run -itd -p 8080:80 –name WebApp centos /bin/bash
docker run後、”docker ps –all”でプロセスを確認するとSTATUSに”Up 13 seconds”と表示されており、コンテナが無事起動できた事が確認できました!!
ブラウザで確認すると・・・
やった!!!
無事表示されました。
今後のdocker起動、停止は下記のコマンドでOKです。
起動:docker start コンテナ名
停止:docker stop コンテナ名
最後に
最初は少し大変かもしれませんがトライ&エラーを繰り返しコンテナ作成できれば後の応用はそんなに難しくありません。
Javaインストールしたり、DB用コンテナ作成したり!
Dockerを使いこなせれば、環境構築のコストはグッと下がります。
Webサーバー、DBサーバーをインストールして設定するのに半日かかるところが最初にDockerfileさえ作ってしまえば
①ビルド(イメージ構築)
②コンテナ作成、起動
で環境構築終了です!!
ちょう楽チン!!!
すてきなDockerライフを!!
【次の記事】
【Dockerfile】Tomcat構築手順(画像あり) – フリーランス チャレンジ!!
コメント