Help us understand the problem. What is going on with this article?

Dockerfileを書いてみる

やること

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

をすれば良い

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away