今回のゴールは「Docker Hello!!」
今回のゴールは、
仮想環境からローカルホストにアクセスし、ブラウザに「Docker Hello!!」と表示させる。
とします。
具体的には Docker
でRuby
の仮想環境を作り、ブラウザに**Docker Hello!!**と表示さます。
Docker学習のアウトプット記事になりますので、間違いがあったらご指摘頂けると幸いです。
Dockerを使って仮想環境を作る手順
- Dockerをインストールする
- Dockerfileを記述する
- Dockerfileをビルドしてコンテナイメージを作る
- コンテナを実行する←ここでようやく仮想環境が出来上がる
Dockerを使って仮想環境を作る流れはこんな感じです。
厳密には違うと思いますが、今のところはこんな認識で問題ないと思います。
今回はDockerファイルの中身にはあまり触れず、
とりあえずDocker使ってコンテナ作ってみる。
っていう感じのノリでやっていきます。
【下準備】作業用のフォルダを作る
今回はデスクトップに『work』というフォルダを作り、その中に『sample-app』というフォルダを作り、その中で作業していきます。
- まずはデスクトップに
work
フォルダを作ります。 - その中に
sample-app
フォルダを作ります。 - ターミナルを起動し、ディレクトリを移動します。
cd desktop
cd work
cd sample-app
これでsample-app
フォルダの中に入りました。
Rubyの処理が書かれたファイルを用意する
今回は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ファイルを使い、仮想環境を作ってみる。
っていうのを目標にしてますので、ruby
の中身はあんまり気にしない方向でやってます。
Dockerfaileを用意する
FROM ruby:2.7
RUN mkdir /var/www
COPY main.rb /var/www
CMD ["ruby", "/var/www/main.rb"]
用意するのは上記2つのファイルだけです。
ターミナルを使ってコンテナイメージとコンテナを作る【buildとrun】
- Dockerファイルをビルドしイメージを作る。
- コンテナを起動させる
今回は上記2つの手順で、コンテナを起動させていきます。
Dockerファイルをビルドし、イメージを作る。
ターミナルを開き、以下のコマンドを実行していきます。
実行するコマンド
docker image build -t test-name:test .
コマンドの書き方
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ってなに? 〜