LoginSignup
5
4

More than 3 years have passed since last update.

dockerfileについて調べてapache起動するまでのメモ

Last updated at Posted at 2020-01-12

はじめに

前回はDockerのコマンド操作を学ぶために主な操作の記事を書かせて頂きました。
他にもいろいろ調べていたらdockerfileなるのもがありそれを使用してイメージを作成するとのことでした。
見た感じ難しそうで抵抗があったのですが、そういうものこそ試していかないといけないと思いやってみましたので備忘録件まとめ用として記事にしてみたいと思います。

dockerfielってなんぞ?

コンテナを作成する場合、docker hubから欲しいイメージを取得してコンテナを作成したり、最小限のイメージから自分で新しくミドルウェアを追加したものをイメージ化して展開したりするとたくさんの情報が出ていましたが、自分でイメージを一から作成する場合などに使用するファイルです。
dockerfileはベースとするイメージに対して行う操作を記載する。

dockerfileを使用する利点

  • OSや各種ミドルウェアなどの設定をコードとして管理できる
  • 上記により細かく設定した環境を漏れなく簡単に再作成したり同一環境を用意したい人に配布できる。
  • jenkinsなどのCIツールを使用することでイメージ作成やコンテナのデプロイを自動化することもできる(らしい)

書き方について

調べてみたのですが結構難しそうでした(笑)
まずは簡単にコードについて

  • FROM イメージ名 →ベースにするイメージを指定する
  • LABEL →管理用の情報などを記載する バージョン情報やなにを作るためのdockerfileですよ的な
  • RUN →コマンド実行を命令するリターンキーの役割(こいつがコマンドを実行していく感じ)
  • CMD →コンテナ起動時にファイルやコマンドを実行する命令を記載する
  • ENV →環境変数を設定する

おおまかにはこんな感じでした。ほかにもたくさんありましたが、いったんこれくらいにしておきました。(覚える自信ない)

実際に書いてみる

簡単にapache用のdockerfileを書いてみます。

dockerfile
FROM centos:centos7        #ベースになるイメージ指定
RUN yum -y update          #パッケージ更新
RUN yum -y upgrade         #更新、不要なもの削除(してくれるらしい)
RUN yum install -y httpd   #apacheインストール
RUN systemctl enable httpd #apache自動起動設定
EXPOSE 80                  #ポート開放

できたので上記ファイルを使用してイメージの作成をしてみます。

$ docker build -t apache .

ずーーーーと実行されて終わったみたいなのでイメージができてるか確認してみます。

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
apache              latest              827d4f21614f        15 seconds ago      599MB

ありました!apacheという名前で作成したのでできています。

イメージからコンテナ作成して起動

起動

$ docker run --privileged -d -p 80:80 apache /sbin/init
8a86bb505eca2b7143ac70a1033e34205ffbbccf48a3ca89e96031194b00ffd9

確認
しっかり起動しているのがわかりました!

$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                NAMES
8a86bb505eca        apache              "/sbin/init"        9 seconds ago       Up 8 seconds        0.0.0.0:80->80/tcp   sweet_hodgkin

実際にアクセスして確認!!

20200113001.JPG

テストページが表示されたので問題なさそうです!!!

ちなみにcentos7の場合はコンテナの起動を上記のようにしないとうまくapacheがうまく起動しないようです。(めっちゃはまった)
ここら辺の起動の仕方とコンテナ内の動きについては調べなおして書かせていただければと思います。

まとめ

  • Dockerfileはベースのイメージに対して行う命令を記載するもの
  • 構築過程のコマンドや起動時の命令もコードとして管理できる
  • 実行するだけで何回でも同じ環境をミスなく作れる
  • まだまだ勉強しないとdockerを扱って環境構築は厳しそうw
5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4