サーバ構築

Dockerfileからのイメージ構築

投稿日:

Dockerfileについて

Dockerイメージを生成するための一連の手順を記述したテキストファイル。

サンプル1

  • Dockerfile作成
$ vi Dockerfile
FROM debian:wheezy

RUN apt-get update && apt-get install -y cowsay fortune

FROM ・・・ 使用するベースイメージを指定。debianイメージのwheezyタグ。最初の命令は必ずFROMでないとダメ。
RUN ・・・ イメージ内で実行するシェルコマンドを指定。

  • Dockerfileからビルドしてイメージ構築
$ ls
Dockerfile
$ docker build -t test/cowsay-dockerfile .
Sending build context to Docker daemon  2.048kB
Step 1/2 : FROM debian:wheezy
wheezy: Pulling from library/debian
4269eaa217cc: Pull complete 
Digest: sha256:d949cbb93a58de27eec4c911f27b9f09edeb3d3ce57cf5ce77d4745211c947f6
Status: Downloaded newer image for debian:wheezy
 ---> 45c34e2cec9b
Step 2/2 : RUN apt-get update && apt-get install -y cowsay fortune
 ---> Running in 4454b03f1cc4
Get:1 http://security.debian.org wheezy/updates Release.gpg [1601 B]
Get:2 http://security.debian.org wheezy/updates Release [52.3 kB]
Get:3 http://security.debian.org wheezy/updates/main amd64 Packages [782 kB]
Get:4 http://deb.debian.org wheezy Release.gpg [2373 B]
Get:5 http://deb.debian.org wheezy-updates Release.gpg [1601 B]
Get:6 http://deb.debian.org wheezy Release [191 kB]
Get:7 http://deb.debian.org wheezy-updates Release [155 kB]
Get:8 http://deb.debian.org wheezy/main amd64 Packages [7634 kB]
Get:9 http://deb.debian.org wheezy-updates/main amd64 Packages [7481 B]
Fetched 8828 kB in 5s (1529 kB/s)
ry
  • 実行
$ docker run test/cowsay-dockerfile /usr/games/cowsay "Moo"
 _____
< Moo >
 -----
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

サンプル2

$ vi dockerfile
FROM debian:wheezy

RUN apt-get update && apt-get install -y cowsay fortune

ENTRYPOINT ["/usr/games/cowsay"]

ENTRYPOINT ・・・ docker runに渡される任意の引数を扱う実行ファイルを指定

  • ビルドして実行
$ docker build -t test/cowsay-dockerfile .
$ docker run test/cowsay-dockerfile "Moo"
 _____
< Moo >
 -----
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

ENTRYPOINT ["/usr/games/cowsay"]を指定してるので、docker run時に/usr/games/cowsayなしで実行できる。

サンプル3

  • スクリプト作成
$ vi entrypoint.sh
#!/bin/bash
if [ $# -eq 0 ];then
  /usr/games/fortune | /usr/games/cowsay
else
  /usr/games/cowsay "$@"
fi

$ chmod +x entrypoint.sh

引数なければfortuneコマンド実行してそれをパイプでcowsayコマンドに渡す。
引数があればcowsayコマンドにその引数を渡して実行する。

  • Dockerファイル作成
$ vi Dockerfile
FROM debian:wheezy

RUN apt-get update && apt-get install -y cowsay fortune
COPY entrypoint.sh /

ENTRYPOINT ["/entrypoint.sh"]

COPY ・・・ ホスト上のファイル(entrypoint.sh)をコンテナイメージのパス(/)にコピーする。

  • 実行
$ docker build -t test/cowsay-dockerfile .
$ docker run test/cowsay-dockerfile
 _______________________________________
/ English literature's performing flea. \
|                                       |
\ -- Sean O'Casey on P. G. Wodehouse    /
 ---------------------------------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

$ docker run test/cowsay-dockerfile Hellow HogeHoge
 _________________
< Hellow HogeHoge >
 -----------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

-サーバ構築
-

Copyright© 明日から頑張ります。 , 2025 All Rights Reserved Powered by STINGER.