Docker事始め

とりあえずDockerを使ってrubyを実行するのが目標です

Dockerはインストールしてある状態で、versionは以下の通り。

$ docker -v
Docker version 17.03.0-ce, build 60ccb22

docker store からrubyのimageをpullします。

$ docker pull ruby:alpine

ruby:alpine の部分は ruby:2.4.0ruby:slim などでも良いです。

各自で用途に合うものを使ってください。今回は軽量らしいので ruby:alpine を使います。

適当にプロジェクトフォルダを作成したら、その中に実行するrubyファイルを作成します。

$ mkdir ruby-sample
$ cd ruby-sample
$ vi test.rb

test.rb

puts 'hello world!!!' 

ここまできたらdockerを使って test.rb を実行してみます。

$ docker run --rm -v "$PWD":/usr/src/ruby-sample -w /usr/src/ruby-sample ruby:alpine ruby test.rb

無事 hello world!!! が出力されました。

--rm は使い終わったコンテナを削除しています。--rm なしでも実行可で docker ps -a で停止したコンテナの情報を見ることができます。

-vホスト側ディレクトリ:コンテナ側ディレクトリ の形でディレクトリを共有しています。

-w はコンテナ内の作業用ディレクトリを指定しています。

Dockerfileを使うやり方

以上の例をDockerfileを使ってやってみます。

$ vi Dockerfile

Dockerfile

FROM ruby:alpine
CMD ["ruby", "./test.rb"]

ビルドしてimageを作成します。

$ docker build -t sample .

ここでは sample という名前のimageを作成しました。

作成したimageをもとに docker run してみましょう。

$ docker run --rm -v "$PWD":/usr/src/ruby-sample -w /usr/src/ruby-sample sample

同じように hello world!!! が出力されました。

以上です。

ほぼこちらのブログのまんまなんですが(微妙に違うけど)、備忘録として載せておきます。

参考

Docker run リファレンス — Docker-docs-ja 1.13.RC ドキュメント

Docker run reference - Docker Documentation

docker上のrubyでHello World出力してみる | Gaku'sMemo