Dockerfile
Dockerfile(ドッカーファイル)とは、Dockerイメージの設計図のことをいいます。 Dockerイメージを新規に作成するための手順を記したテキストファイルで、プログラムを動作させるサーバーやミドルウェア、コマンドなどの情報を記載します。
骨格としては
- アプリケーションコードを用意
- Dockerfileを用意
- イメージの作成
- イメージからコンテナを作成し、起動させる
- コンテナの停止/削除
- イメージの削除
- エラーが起きたら...
- 後片付け
となる。
■アプリケーションコードを用意
RubyでWebサーバを用意して、TOPページにアクセスしたらHelloと出力するやつを作る。
作業ディレクトリ ├ Dockerfile └ 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= 'hello' end server.start
注意点として、あくまで簡易サーバーなので、BindAddressも書いてある通りで良い。下手に127.0.0.1とかにするとエラーになった。
あと、Dockerfileを後で作るが、一応この段階でコマンドで
ruby main.rb
として動作を確かめた方が良い。
そして、Dockerfileでrubyのバージョン指定を記述するが、この段階でDockerで使用するrubyのバージョンをHomebrewでチェンジして問題なく動くか確認した方が良い。
■Dockerfileを用意
Dockerfile = イメージの雛形
主に以下の内容を書いていく。
FROM ruby:2.7 RUN mkdir /var/www COPY main.rb /var/www CMD ["ruby", "/var/www/main.rb"]
FROM
は rubyのバージョンは2.7と指定RUN
は コマンドの実行、実際にRUN
の右側に書いてあるのは読んで字の如くですねCOPY
はmain.rb
を/var/www
に置くよ、という内容CMD
は Dockerイメージを作成・起動した時の実行するコマンドの指定- 今回は、実態ファイル
main.rb
を実行せよという意味です
- 今回は、実態ファイル
■イメージの作成
基本的なコマンドはdocker image build
です。
docker image build -t sample/webrick:latest .
オプションの -t
は今回、sample/webrick:latest
という名前をつけますという意味。
イメージが生成されているか確認。
docker image ls
※コマンド何だったか?という時に
docker --help
※docker imageのパラメータを詳しく知りたい時
docker image --help
■イメージからコンテナを作成し、起動させる
基本的なコマンドはdocker container runです。
docker container run -p 8000:8000 --name webrick sample/webrick:latest #バックグラウンドで動かす場合 docker container run -d -p 8000:8000 --name webrick sample/webrick:latest
p
はportの指定です。p 8000:8000
はローカルの8000番ポートを、dockerの8000番ポートに接続させています。
右側のdockerのポートはmain.rb
でサーバの設定でport: 8000
を指定したので右側は8000を指定する必要があります。
-name xxx
コンテナに名前をつけています。コンテナに名前をつけると、後々、操作する時に楽なので名前をつけています。
オプションに-it
をつけると、ざっくりいうと、bashコマンドのインタラクティブな機能を引き出せる、ということらしい。
参考URL:docker exec -it の -it の意味
■コンテナの停止・削除
基本的には、イメージより先にコンテナを削除した方が良い。
いずれにせよ、ひとしきり作業が終わったら、削除するくらいでいい。
# 起動中のコンテナを確認 docker container ls # 全てののコンテナを確認 docker container ls -a # コンテナを停止 ctrl + c または docker container stop webrick
削除は以下です。
docker container rm webrick
またはDocker DesctopのGUIで、停止も削除もできます。