LoginSignup
431

More than 3 years have passed since last update.

Dockerfileを書いてみる

Last updated at Posted at 2017-03-01

やること

Docker fileの書き方、仕組みを理解する。
Dockerを0から勉強する
ではDockerfileを使わない方法を記載しています。

流れ(イメージ)

※2017/5/4 図の間違えを修正
Dockerfile図.png

開発環境

  • Vitualbox(5.1.0)
  • Vagrant(1.9.1)
  • Docker(1.13.1)
  • Ubuntu(16.04)
  • CentOS7

1. Dockerfileの作成

$ vim Dockerfile
# どのイメージを基にするか
FROM centos
# 作成したユーザの情報
LABEL maintainer="Admin <admin@admin.com>"
# RUN: docker buildするときに実行される
RUN echo "now building..."
# CMD: docker runするときに実行される
CMD echo "now running..."

Dockerfileをビルドして"admin/echo"イメージの作成

-t : ビルド成功後メッセージ表示

$ sudo docker build -t admin/echo .

"admin/echo"イメージからコンテナの作成

$ sudo docker run admin/echo

2. webサーバの立ち上げと編集の流れ

①webサーバの立ち上げ

$ vim Dockerfile
# どのイメージを基にするか
FROM centos
MAINTAINER Admin <admin@admin.com>
# RUN: buildするときに実行される
# RUN echo "now building..."
# CMD: runするときに実行される
CMD echo "now running..."

# httpdのインストール
RUN yum install -y httpd
# ホストのindex.htmlをImage内にコピー
ADD ./index.html /var/www/html/
#ポート80を開ける
EXPOSE 80
#runした時にapache起動
CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"]

ホスト側のポートの8080番をコンテナ側の80番にリダイレクト

sudo docker run -p 8080:80 -d admin/httpd

ブラウザ上でホストの「ipアドレス:8080」にアクセス

-->表示されればOK

②編集して再度イメージを作る

実行しているプロセスを切る

$ sudo docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
b34ac75ca77d        admin/httpd         "/usr/sbin/httpd -..."   48 seconds ago      Up 48 seconds       0.0.0.0:8080->80/tcp   loving_booth

$ sudo docker kill b34

適当に編集してみる

[直接編集]
$ sudo docker run -i -t admin/httpd /bin/bash
$ exit
[index.htmlの編集]
$ vim index.html
[etc.....]

編集後、イメージを更新する

$ sudo docker build -t admin/httpd .

コンテナを再度、作って動作確認

$ sudo docker run -p 8080:80 -d admin/httpd

3. イメージをDocker hubにプッシュする

Docker hubにsign upより登録しておく
https://hub.docker.com

loginする(ユーザ名など聞かれる)

sudo docker login

pushする

sudo docker push admin/httpd

Docker hubにログインして、Repositoriesのところにadmin/httpdがあればOK

これをpullしたい時は

$ sudo docker pull admin/httpd

をすれば良い

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
431