LoginSignup
0
2

More than 3 years have passed since last update.

Dockerfileを活用したDockerイメージの作成

Last updated at Posted at 2019-06-09

本投稿では、Dockerfileを活用して、Apacheが動作するWebサーバ用Dockerイメージを作成します。

1. Dockerfileの準備

Dockerfileに centos 7.5.1804 をベースとして、Apacheをインストールする処理を記述します。

$ cat Dockerfile
FROM centos:7.5.1804
RUN yum install -y httpd iproute && yum clean all
RUN echo "Hello Apache." > /var/www/html/index.html
RUN systemctl enable httpd

2. Dockerイメージの作成

手順1で作成した Dockerfileを活用して、Dockerイメージを作成します。

Dockerイメージ作成時にDockerfileを利用する場合は、 -t オプションで活用するDockerfileを指定します。

Dockerイメージの作成

$ docker image build -f ./Dockerfile -t centos:c75apache01 .
Sending build context to Docker daemon  2.048kB
Step 1/4 : FROM centos:7.5.1804
.
.
.
Step 4/4 : RUN systemctl enable httpd
 ---> Running in 24b73348522b
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service, pointing to /usr/lib/systemd/system/httpd.service.
Removing intermediate container 24b73348522b
 ---> f266477d66c2
Successfully built f266477d66c2
Successfully tagged centos:c75apache01

作成したDockerイメージの確認

$ docker image ls
REPOSITORY                         TAG                    IMAGE ID            CREATED             SIZE
centos                             c75apache01            f266477d66c2        2 minutes ago       257MB

3. Dockerコンテナの起動

手順2で作成したDockerイメージをコンテナで起動します。

以下のコマンドでは --tmpfs オプションを活用し、 /tmp と /run フォルダをメモリ上に展開するようにします。

-p オプションではポートを指定して、ホストOS上で8081番ポートを参照するとDockerコンテナの80番ポートへポートフォワードするように設定することができます。

$ docker container run \
> -itd \
> --tmpfs /tmp \
> --tmpfs /run \
> -v /sys/fs/cgroup:/sys/fs/cgroup:ro \
> --stop-signal SIGRTMIN+3 \
> --name web0001 \
> -h web0001 \
> -p 8081:80 \
> centos:c75apache01 /sbin/init
6e97f6a5313703a2c5c5aa30b741164f096e6a4b97f9c52af2ec5b928a26f512
$ docker container ls -a
CONTAINER ID        IMAGE                COMMAND                   CREATED             STATUS                     PORTS                  NAMES
6e97f6a53137        centos:c75apache01   "/sbin/init"              9 seconds ago       Up 8 seconds               0.0.0.0:8081->80/tcp   web0001
$ docker container stats --no-stream
CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT     MEM %               NET I/O             BLOCK I/O           PIDS
6e97f6a53137        web0001             0.01%               11.94MiB / 1.952GiB   0.60%               5.35kB / 3.25kB     6.67MB / 4.1kB      12

コンテナへのログイン

コンテナ起動後に、 docker container exec コマンドでコンテナへログインし、Apacheが起動していることとドキュメントルートにファイルが展開されていることを確認します。

$ docker container exec -it web0001 /bin/bash
[root@web0001 /]# systemctl status httpd | grep active
   Active: active (running) since Sun 2019-06-09 04:53:57 UTC; 3min 9s ago
[root@web0001 /]# cat /var/www/html/index.html
Hello Apache.
[root@web0001 /]#

Apacheの動作確認

ホストOS上で、8081番ポートへhttpアクセスすると上記手順で作成したコンテナ上にあるApacheにアクセスできることが確認できます。

$ curl http://localhost:8081/
Hello Apache.
$

参考文献

  1. 古賀政純, "Docker実践ガイド 第2版", 2019.
  2. Use tmpfs mounts _ Docker Documentation, https://docs.docker.com/storage/tmpfs/, Online; accessed 9-June-2019.
0
2
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
0
2