LoginSignup
0
0

More than 3 years have passed since last update.

さわっておぼえるDocker入門🐳#5(Dockerfileを作る+ボリュームを扱う)

Last updated at Posted at 2020-04-17

はじめに

Dockerコンテナでボリュームをマウントし扱う方法を学びます。

DBやファイルなどを扱う際は、ボリュームをマウントします。
コンテナでボリュームをマウントするのには、理由があります。
コンテナ内にデータを保存してしまうと、コンテナを削除したり移動した際に、保存したデータがなくなってしまうかもしれないからです。

そのため、Dockerではデータへの参照を主に扱い、コンテナが消えてもデータは消えない形での運用が基本となります。

目的

Dockerを触りながら、コンテナにボリュームをマウントする方法を学ぶ

今回は、下記の操作を行います。

  • 簡単なDockerfileを自作する
  • Dockerボリュームを指定してコンテナを起動

環境

  • macOS Mojave 10.14.6
  • Docker engine 19.03.5

コンテナをアレコレしてみる

公式のnginxイメージで表示されるデフォルトの画面を変更してみます。

まずはデフォルトの画面を見てみる

まずは公式nginxイメージからコンテナを立ち上げ、デフォルト画面を確認してみます。

docker container run -d --name nginx -p 80:80 nginx

ブラウザでlocalhostを開くと、デフォルトの画面が表示されます。

スクリーンショット 2020-04-17 17.32.39.png

デフォルト画面を変更する

表示される画面を変更するために、公式イメージから自作のイメージを作成します。

Dockerfileを自作する

適当なフォルダにDockerfileという名前のファイルを作成します。これが自作イメージになります。(たった3行ですが...)

Dockerfile
FROM nginx:latest

WORKDIR /usr/share/nginx/html

COPY index.html index.html

また、デフォルト画面として表示するindex.htmlファイルを作成しておきます。

index.html
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>My test page</title>
  </head>
  <body>
    <h1>くじらコンテナ🐳</h1>
  </body>
</html>

FROM

公式のnginxイメージをカスタマイズしていきます。
FROMで自分のイメージの元として現在の公式リポジトリを使います。

FROM nginx:latest

WORKDIR

WORKDIRは、その名の通りコンテナ内の作業ディレクトリを指定します。

WORKDIR /usr/share/nginx/html

COPY

COPYは、ローカルのファイルをコンテナにコピーします。
ここでは、Dockerfileと同じディレクトリに存在するindex.htmlをコンテナ内に保存しています。

自作イメージからコンテナを立ち上げる

では、今作ったイメージからコンテナを立ち上げます。
先ほどDockerfileを作成したディレクトリで、以下のコマンドを実行します。

docker container run -d --name nginx2 -p 8080:80 -v $(pwd):/usr/share/nginx/html nginx

-vオプション

-v[ホストディレクトリの絶対パス]:[コンテナの絶対パス]で、ボリュームをコンテナにマウントできます。

今回コンテナにマウントしているのは、先ほどのローカルディレクトリです。

以下のコマンドについて説明します。

-v $(pwd):/usr/share/nginx/html
  • $(pwd):これはDocker関係ないのですが、現在のディレクトリまでのフルパスです
  • /usr/share/nginx/html: Dockerファイルで指定した作業ディレクトリです

ローカルのディレクトリがコンテナからも参照されている状態になっています。

ブラウザで確認する

-pコマンドで指定した8080番ポートをブラウザで確認すると...

スクリーンショット 2020-04-17 17.58.02.png

自作の画面が表示されました!

まとめ

今回は

  • 自作のDockerfileを作成する
  • Dockerボリュームを指定してコンテナを起動

しながら、実際にコンテナにボリュームをマウントしてみました。

0
0
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
0