0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【学習メモ】Dockerfileを書いてRubyを実行してみる

Last updated at Posted at 2021-02-14

今回のゴールは「Docker Hello!!」

今回のゴールは、

仮想環境からローカルホストにアクセスし、ブラウザに「Docker Hello!!」と表示させる。

とします。
具体的には DockerRubyの仮想環境を作り、ブラウザに**Docker Hello!!**と表示さます。

Docker学習のアウトプット記事になりますので、間違いがあったらご指摘頂けると幸いです。

Dockerを使って仮想環境を作る手順

  1. Dockerをインストールする
  2. Dockerfileを記述する
  3. Dockerfileをビルドしてコンテナイメージを作る
  4. コンテナを実行する←ここでようやく仮想環境が出来上がる

Dockerを使って仮想環境を作る流れはこんな感じです。

厳密には違うと思いますが、今のところはこんな認識で問題ないと思います。
今回はDockerファイルの中身にはあまり触れず、

とりあえずDocker使ってコンテナ作ってみる。
っていう感じのノリでやっていきます。

【下準備】作業用のフォルダを作る

今回はデスクトップに『work』というフォルダを作り、その中に『sample-app』というフォルダを作り、その中で作業していきます。

  1. まずはデスクトップにworkフォルダを作ります。
  2. その中にsample-appフォルダを作ります。
  3. ターミナルを起動し、ディレクトリを移動します。
cd desktop
cd work
cd sample-app

これでsample-appフォルダの中に入りました。

Rubyの処理が書かれたファイルを用意する

今回はmain.rbってファイルを用意しました。

main.rb
require 'webrick'

server = WEBrick::HTTPServer.new(
  DocumentRoot: './',
  BindAddress: '0.0.0.0',
  Port: 8000
)

server.mount_proc('/') do |req, res|
  res.body = 'Docker hello!!'
end

server.start

このコードはこちらの動画にあるコードを参考にしてます。

【Docker超入門 #5】アプリを作成・実行しよう

今回はあくまで
Dockerファイルを使い、仮想環境を作ってみる。
っていうのを目標にしてますので、rubyの中身はあんまり気にしない方向でやってます。

Dockerfaileを用意する

Dockerfile
FROM ruby:2.7

RUN mkdir /var/www
COPY main.rb /var/www

CMD ["ruby", "/var/www/main.rb"]

用意するのは上記2つのファイルだけです。

ターミナルを使ってコンテナイメージとコンテナを作る【buildとrun】

  1. Dockerファイルをビルドしイメージを作る。
  2. コンテナを起動させる

今回は上記2つの手順で、コンテナを起動させていきます。

Dockerファイルをビルドし、イメージを作る。

ターミナルを開き、以下のコマンドを実行していきます。

実行するコマンド
docker image build -t test-name:test .

【公式ドキュメント】docker image build

コマンドの書き方
docker image build [オプション名] [パス]

オプション名の-tはタグって意味で、イメージ名とタグ名の2つを書くのが決まりになってます。
なので今回は、イメージ名をtest-name、タグ名をtestにしてます。

.(ドット)は「今いる階層」って意味です。
ITっぽく言うと、カレントディレクトリってやつですね。

つまりこのコマンドは、
今いる階層の中にあるdockerfileをビルドせよ。イメージの名前はtest-nameね、タグの名前はtestだよ。

って意味になります。

イメージが作れたかを確認する。

docker image ls

このコマンドで、現在実行されてるイメージファイルの一覧が見れます。

REPOSITORYにtest-name
TAGにtest

と書かれたDockerイメージが出てくればOKです。

コンテナを起動させる。

実行するコマンド
docker container run -p 8000:8000 --name test-docker test-name:test
コマンドの書き方
docker container run [オプション名] --name [コンテナ名] [イメージ名]:[タグ名]

-pはポート番号を指定してます。
詳しい説明は割愛しますが、ローカルと仮想空間を紐づけてるって認識でいいと思います。

--nameはコンテナの名前が書いてあり、今回はtest-dockerってコンテナ名にしてます。

そこから下の[イメージ名]:[タグ名]
さっきビルドした時に書いたイメージ名とタグ名を指定します。

つまりこのコマンドは、
test-name:testってイメージファイルはtest-dockerって名前でコンテナを作ってね。あ、ポートは8000番を使ってね。

って意味です。
これで仮想空間が作られてるはずです。

ローカルホスト8000にアクセスしてみる

実際にローカルホストにアクセスしてみます。
なんでもいいんでブラウザを立ち上げましょう。

そしてURLにlocalhost:8000と打ってアクセスしてみてください。
rubyファイルの記述された、docker hello!!と出力されてるはずです。

コンテナを止めて削除する

コンテナにはライフサイクルって考え方があって、
作成⇒起動⇒停止⇒削除
といった決まりがあります。

要は
コンテナ作ったら消してね。
ってのがルールらしいです。

コンテナの作成・及び起動は上記で説明した通りなので割愛します。

コンテナの停止
docker container stop [コンテナ名]

今回の場合なら

docker container stop test-docker

となります。

コンテナ・及びイメージの削除は、

docker system prune

これを実行すると、コンテナとイメージを一掃することができます。

以上です。

参考にさせて頂た記事

【Docker超入門 #5】アプリを作成・実行しよう
Dockerのイメージ、コンテナおよびボリュームを削除する方法
Docker一括削除コマンドまとめ
Dockerコンテナライフサイクルについて
docker container / image コマンド新旧比較
dockerコマンド一覧
【連載】世界一わかりみが深いコンテナ & Docker入門 〜 その2: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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?