このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
【Docker入門】Rubyコンテナ

ここでは、Docker Composeコマンドを使ったRubyコンテナの構築例を紹介します。
Rubyとは
まず、はじめにRubyについて簡単に解説しておきます。

Rubyは、オブジェクト指向プログラミング言語の1つであり、シンプルさと柔軟性を重視した設計が特徴です。まず1995年に日本の松本行弘(通称Matz)によって開発され、その後世界中で広く使われるようになりました。
Rubyの特徴の1つは、読みやすく自然な文法です。これにより、初心者から上級者まで、幅広いプログラマーがRubyを学びやすく、生産性が高いと評価しています。また、Rubyは動的型付け言語であり、プログラムの記述が柔軟でありながらも、型の厳格な制約による安全性も確保されています。
Rubyは、Webアプリケーションの開発に広く使用されており、特にRuby on Railsというフレームワークが有名です。Ruby on Railsは、迅速な開発と保守性の高さを提供し、多くの人々がウェブアプリケーションを構築するための選択肢として利用しています。
Rubyはまた、スクリプト言語としても非常に人気があり、システム管理や自動化、データ処理などのさまざまな用途に利用されています。
URL:https://www.ruby-lang.org/ja/

Rubyコンテナの作成
「compose.yaml」を作成して、Rubyコンテナを作成します。

不要なDockerオブジェクトの削除
まず、不要なDockerオブジェクトをすべて削除しておきます。
以下のコマンドを実行します。
・「docker system prune -a」コマンドを実行します。
Are you sure you want to continue? [y/N] の質問には「y」と入力します。
PS C:\Users\joeac> docker system prune -a
WARNING! This will remove:
- all stopped containers
- all networks not used by at least one container
- all images without at least one container associated to them
- all build cache
Are you sure you want to continue? [y/N] y
Deleted Containers:
(略)
・「docker system prune -a」コマンドで削除されなかったDockerオブジェクトは、個別に削除しておきます。
環境によって削除されずに残っているDockerオブジェクトは異なります。
compose.yaml の作成
ディレクトリの作成と移動
Docker Composeでコンテナを作成するには、「compose.yaml」ファイルが必要になります。
デフォルトでは、カレントディレクトリにある「compose.yaml」ファイルが読み込まれるため、作業ディレクトリに移動しておきます。
・「cd desktop/docker」コマンドを実行します。
PS C:\Users\joeac> cd desktop/docker
PS C:\Users\joeac\Desktop\docker>
「compose.yaml」ファイルを保存する「ruby」ディレクトリを作成して、作成したディレクトリに移動します。次のコマンドを実行します。
- 「mkdir ruby」コマンド
- 「cd ruby」コマンド
PS C:\Users\joeac\Desktop\docker> mkdir ruby
Directory: C:\Users\joeac\Desktop\docker
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 2024/04/20 22:29 ruby
PS C:\Users\joeac\Desktop\docker> cd ruby
PS C:\Users\joeac\Desktop\docker\ruby>
VSCodeの起動
VSCodeで「compose.yaml」ファイルを作成します。
・「code compose.yaml」コマンドを実行します。
PS C:\Users\joeac\Desktop\docker\ruby> code compose.yaml
VSCodeが起動します。

「compose.yaml」ファイルの編集
・「compose.yaml」ファイルを以下のように編集して保存します。
services:
ruby:
image: ruby:3.0.6
container_name: ruby_container
tty: true
volumes:
- ./src:/src
定義内容の解説
「compose.yaml」ファイルの定義を解説します。
サービス名 | 内容 |
---|---|
ruby | - Rubyのコンテナを定義します。 |
- イメージは ruby:3.0.6 を使用します。 | |
- コンテナの名前は ruby_container に設定されます。 | |
- tty オプションは、コンテナが標準入出力を割り当てられ、対話型のシェルを使用できるようにします。 | |
- 「./src ディレクトリをコンテナ内の /src ディレクトリにマウントします。 |
この docker compose.yml
ファイルは、Ruby 3.0.6 の公式イメージを使って、 「./src
」 ディレクトリを Ruby コンテナ内の /src
にマウントする ruby
サービスを定義しています。これにより、ローカル環境のソースコードをコンテナ内で編集および実行することが可能になります。
Rubyプログラム
簡単なrubyプログラムを作成します。
プログラムを保存するディレクトリ
プログラムを保存するディレクトリを作成します。
・「mkdir src」コマンドを実行します。
PS C:\Users\joeac\Desktop\docker\ruby> mkdir src
Directory: C:\Users\joeac\Desktop\docker\ruby
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 2024/04/20 23:03 src
VSCodeで「hello_world.rb」ファイルを作成します。
・「code ./src/hello_world.rb」コマンドを実行します。
PS C:\Users\joeac\Desktop\docker\ruby> code ./src/hello_world.rb
VSCodeが起動します。

・「hello_world.rb」ファイルを以下のように編集して保存します。
# hello_world.rb
# "Hello world!"というメッセージを表示する
puts "Hello world!"
コンテナの作成と実行
「docker compose up -d」コマンドを実行します。
このコマンドは、「compose.yaml」ファイルを配置した場所で実行する必要があります。
PS C:\Users\joeac\Desktop\docker\ruby> docker compose up -d
[+] Running 8/8
✔ ruby Pulled 14.7s
✔ ac323bdaa10f Pull complete 2.8s
✔ 84811b2a563b Pull complete 1.5s
✔ b3ff24b88ad3 Pull complete 2.8s
✔ c6f58f24df78 Pull complete 6.1s
✔ 3089396dabf5 Pull complete 3.5s
✔ 1310941d32d8 Pull complete 4.6s
✔ d3ab0dd6a02d Pull complete 4.2s
[+] Running 2/2
✔ Network ruby_default Created 0.0s
✔ Container ruby_container Started 0.7s
Rubyプログラムの実行
Rubyコンテナが作成できたので、Rubyプログラムを実行します。
・「docker compose exec ruby ruby /src/hello_world.rb」コマンドを実行します。
このコマンドは、Docker Composeを使用して名前が ruby
であるサービス(コンテナ)内で ruby /src/hello_world.rb
を実行するためのものです。つまり、Rubyコンテナ内で hello_world.rb
プログラムがRubyのインタプリタで実行されます。
項目 | 説明 |
---|---|
docker compose exec | Docker Composeを使用して、コンテナ内でコマンドを実行するためのサブコマンドです。 |
ruby | 実行したいコンテナの名前またはIDを指定します。 |
ruby /src/hello_world.rb | Rubyコンテナ内で実行されるプログラムを指定します。ここでは、/src ディレクトリにある hello_world.rb ファイルが Ruby インタプリタで実行されます。 |
PS C:\Users\joeac\Desktop\docker\ruby> docker compose exec ruby ruby /src/hello_world.rb
Hello world!
Rubyプログラムが実行されて、「Hello World!」と表示されます。