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?

お題は不問!Qiita Engineer Festa 2024で記事投稿!
Qiita Engineer Festa20242024年7月17日まで開催中!

【Docker Storage】バインドマウントでホストマシンのファイルを Ruby コンテナで実行する

Last updated at Posted at 2024-07-01

はじめに

この記事では、Docker のバインドマウント機能を利用して、ホストマシンのファイルを Ruby コンテナで実行する手順について記載します。
バインドマウントへの理解促進の一環で行っています。

バインドマウントとボリューム

バインドマウントと似た概念として、ボリュームがあります。

両者ともデータをコンテナとは別に管理するという役割を持っていますが、データの保存先が異なります。

  • バインドマウント : ホストマシンのファイルやディレクトリ
    • ユースケース : ホストマシンのエディタでファイルを編集して、コンテナで実行する
  • ボリューム : ホストマシンの Docker のストレージ
    • ユースケース : データベースサーバーのデータを保持する

image.png
1

ボリュームについては、こちらの記事に記載しています。

開発環境

開発環境は以下の通りです。

  • Windows 11
  • Docker Engine 26.1.1
  • Ruby 3.3.3

コンテナにバインドマウントする

まず、コンテナにバインドマウントするためのデータとして、ホストマシンに Ruby ファイルを追加します。

hello.rb
puts "Hello world from host machine"

次にボリュームと同じくdocker container run コマンドの --mount オプションを指定して、作成した Ruby ファイルをマウントします。

<key> <value> 備考
type bind
source "$(pwd)" pwd コマンドで作業ディレクトリの絶対パスを展開
target /my-work 任意のパス

それでは、Ruby ファイルを作成したディレクトリで、Ruby コンテナを起動します。

# docker container run [OPTIONS] IMAGE [COMMAND] [ARG...]
docker container run                              `
--name ruby                                       `
--rm                                              `
--interactive                                     `
--tty                                             `
--mount type=bind,source="$(pwd)",target=/my-work `
ruby:3.3.3                                        `
bash

コンテナ内でファイル操作をしたいため、[COMMAND]bash を指定しています。それに伴いコンテナを対話操作するため [OPTIONS]--interactive--tty を指定しています。

プロンプトが変わります。

image.png

destibation(マウント先)として指定したパスに Ruby ファイルが存在するか確認します。

ls /my-work/

image.png

Ruby ファイルの内容を出力します。

ruby /my-work/hello.rb

image.png

ホストマシンで Ruby ファイルの内容を変更して、再度 Ruby ファイルの内容を出力します。

hello.rb
puts "Hello world!"
ruby /my-work/hello.rb

image.png

コンテナで Ruby ファイルを削除すると、ホストマシンからもファイルがなくなるので、注意が必要です。

rm /my-work/hello.rb

参考

関連記事

  1. https://docs.docker.com/storage/bind-mounts/

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?