1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Dockerfileがいかに便利か体験してみた

Posted at

自身のアプリケーションにdockerの導入をしようと勉強をしていたところ
とりあえずdockerfileに記述して、docker-composeに記述すると・・・、ハイ、できた・・・
けどよくわからないという状態になってしまったので
dockerfileで行われていることをdockerfileを使わないで実装してみる。

目標
centOSにApacheとPHPをインストールしてphpアプリをコピーしてApacheを起動する

centosのイメージからコンテナを立ち上げる(test) 

% docker run -d -it -p 8080:80 --name test centos:centos7

コンテナにログイン

# docker exec -it test /bin/bash

Apacheをインストール

# yum install httpd

phpをインストール

# yum install httpd

Apacheを起動

# /usr/sbin/httpd

コンテナからログアウト

# exit

phpファイル作成

test.php
<?php
  echo "hoge";
?>

コンテナにコピー

% docker cp test.php test:/var/www/html

Image from Gyazo

と表示される。

わかったこと

centosのイメージから作ったコンテナに
apacheをインストール、phpをインストールと順番に追加していく。
大変。。。

Dockerfileを使うと

以下の同じフォルダにDockerfileを作成

dockerfile.
FROM centos:centos7

RUN yum -y install httpd php

COPY test.php /var/www/html/

CMD ["/usr/sbin/httpd","-DFOREGROUND"]

dockerfileのディレクトリで

% docker build -t test .
% docker run -d -p 8080:80 --name testweb test:latest  

同じ結果となる。

わかったこと

はじめのやり方をDockerfileに記述して
PCにやってもらう。
簡単。

PHPのdockerイメージを使ってコンテナを作る

Dockerfileを以下に修正

dockerfile.
FROM php:7.2-apache
COPY test.php /var/www/html/

dockerfileのディレクトリで

% docker build -t test .
% docker run -d -p 8080:80 --name testweb test:latest  

同じ結果となる

わかったこと

「osを何にするか、その後何をインストールするか」を
他の人が指定してくれたもの(dockerfile)をdockerイメージとして
DockerHubからPULLしてくる
もっと簡単。

まとめ

導入の方法ばかり検索してしまい、どうしてこのコードを書いているのかという
根本を忘れてしまう。
手間ではあるが、一度その技術が出来る前の方法を理解すると
なぜその技術が生まれたのか、どれくらい便利なものなのかが実感できることがわかった。

参考にしたページ
世界一わかりみが深いコンテナ & Docker入門 〜 その3:Dockerfileってなに? 〜
https://tech-lab.sios.jp/archives/19191

1
3
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
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?