docker を使ってみる (チュートリアル Part2)
Docker
Published: 2019-10-15

やったこと

docker を使ってみます。

チュートリアルの Part2 です。

調査

Dockerfile の定義

コンテナで何をするのかということを定義します。

Dockerfile

# 公式 Python ランタイムを親イメージとして使用
FROM python:2.7-slim

# 作業ディレクトリを /app に設定
WORKDIR /app

# 現在のディレクトリの内容を、コンテナ内の /app にコピー
ADD . /app

# requirements.txt で指定された必要なパッケージを全てインストール
RUN pip install -r requirements.txt

# ポート 80 番をコンテナの外の世界でも利用可能に
EXPOSE 80

# 環境変数の定義
ENV NAME World

# コンテナ起動時に app.py を実行
CMD ["python", "app.py"]

※ 下記ファイルも必要ですが、参考サイトを見てください。

  • app.py
  • requirements.txt

Docker イメージを作成

$ docker build -t friendlyhello .

アプリケーションを起動する

$ docker run -p 4000:80 friendlyhello
$ curl http://localhost:4000

確認

実行中のコンテナID 2a2ef4f0bd30 の確認

$ docker container ls
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                  NAMES
2a2ef4f0bd30        friendlyhello       "python app.py"     8 minutes ago       Up 8 minutes        0.0.0.0:4000->80/tcp   confident_tu

Docker Hub のイメージを利用する

Docker Hub のイメージを使い nginx を起動します。

$ docker pull nginx:latest

Dockerfile

FROM  nginx:latest

# author
MAINTAINER  hoge

ADD default.conf /etc/nginx/conf.d

RUN echo "now building..."

docker-compose.yml

version: '3'
services:
  nginx:
    build: .
    ports:
      - "8080:80"
    volumes:
      - ./public:/usr/share/nginx/html

設定ファイルを空で用意します

$ touch default.conf

コンテナ起動

$ docker-compose up

コンテナに入る

nginx_nginx_1 はコンテナ名です。

$ docker exec -i -t nginx_nginx_1 bash

設定ファイルは default.conf と同じで空でした。

# cat /etc/nginx/conf.d/default.conf

参考