質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

2回答

1241閲覧

dockerを用いて開発をする流れやメリットがわかりません

gamimaru

総合スコア4

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

3クリップ

投稿2019/10/13 13:02

いまいちdockerコンテナで開発を進める時の流れがわかりません。
色々調べているとこんな感じになるのかなと思った流れを下に書きます。

例えばrailsアプリ(なんでもいいですが)を開発する場合
1、railsの基本セットが入っているimageをダウンロードしてきて、コンテナ化する
2、exec -it /bin/bash で入ってsftpなど無いのでatom等のテキストエディタも使わずひたすらvim等で開発する(コンテナにsshdやsftpを入れるのはよくないという意見を見た)
3、その日の開発が終わったら進んだ状況をimage化して保存
4、次の日は昨日保存したimageを読み込みrunしてexec

変更するであろうデータは-vでマウントしたフォルダにおくというのがありましたが、railsアプリともなると大量のディレクトリを弄る事になると思うのですが、全部いちいち-v hoge:aなどとやっていくのでしょうか?

既に完成しているものをちゃちゃっと使うにはdockerが便利だと理解できるのですが、自分が開発すると考えるととっても開発しづらい環境に思えてなりません。(コンテナにsftpやsshdを入れないと既存のguiツールなども全く使えないし、入れるとどんどんコンテナが非マイクロサービス化していく)

dockerを利用して開発をする時の流れを知っている方がいらっしゃいましたら教えて頂きたく思います。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

別の方が書いてるとおり、どうしてそういう使い方をすると思ったのかは謎。

dockerというか、コンテナ型仮想化を使うメリットは、環境を丸ごと再現可能で比較的軽量であるという一点。

例えば、開発中のモノ以外に2つのプロジェクトをメンテする必要があるとする。

  • プロジェクトAはフレームワークのバージョンX
  • プロジェクトBはフレームワークのバージョンY
  • プロジェクトCはフレームワークのバージョンZ

を使っているとする。

あなたは普段プロジェクトAをメインに開発しており、フレームワークのバージョンXをインストールしているとする。
でも突発的にプロジェクトBやCも手を入れる必要がある時、どうするのか?という問題。

まぁRubyとか独自にバージョン管理ツールがあるものであればそっちで切り替えてもいいけど、そうもいかない場合もある。

その場合、いちいちマシンにインストールされているフレームワークをインストールし直してバージョンを変える方法もあるし、バージョン毎にVirtualBoxやVMWareなどで仮想マシンを作って作業してもいいけど、コンテナ(docker)でやった方が遥かに簡単。

2、exec -it /bin/bash で入ってsftpなど無いのでatom等のテキストエディタも使わずひたすらvim等で開発する(コンテナにsshdやsftpを入れるのはよくないという意見を見た)
3、その日の開発が終わったら進んだ状況をimage化して保存
4、次の日は昨日保存したimageを読み込みrunしてexec

こんなことは普通やらない。
プログラムを動作させるために必要なコンテナを作ったら、あとはそれを使い回すだけ。

コードの修正とかはコンテナの外でやって成果物だけマウントする。
コンテナはあくまで実行環境。

変更するであろうデータは-vでマウントしたフォルダにおくというのがありましたが、railsアプリともなると大量のディレクトリを弄る事になると思うのですが、全部いちいち-v hoge:aなどとやっていくのでしょうか?

それが面倒ならリポジトリのReadmeあたりに定型コマンド書いておいてコピペしても良いし、スクリプト書いておいても良いし、docker-composeを使っても良いし、開発ツールの支援機能(VSCodeなど)を使っても良い。やり方は色々ある。

投稿2019/10/13 18:38

gentaro

総合スコア8949

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

??? 何を見たらそんな使い方になるのか全く分からない。
誰もそんな使い方はしてない。

Docker以前に調べ方から壮大に間違ってるのでDockerのことは忘れたほうがいい。
Dockerの前に学ぶことが大量に残ってる。

今のプログラミング界隈の常識
・検索するな
・個人ブログは見るな
・初心者が初心者に教えてる地獄
・公式だけ見ろ

投稿2019/10/13 14:01

kawax

総合スコア10377

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問