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

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

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

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

Q&A

解決済

2回答

1944閲覧

Docker コンテナ内・コンテナ外での開発の進め方について

ckr

総合スコア23

Docker

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

0グッド

0クリップ

投稿2020/04/15 11:36

初歩的な質問ですが、自分の中で概念が掴めておらず、質問をさせていただきます。

現在Dockerを用いて、開発環境を構築しております。
「コンテナ内で開発をする場合」「コンテナ外で開発をする場合」という進め方があると
思いますが、具体的にそれぞれどのように開発を進めていくのか、ご教授いただけますでしょうか。

調べた範囲だと、コンテナ内で開発をする場合はDocker内でvim等のエディタを用いて開発する、
コンテナ外だと、自分自身のローカル環境のエディタ(visual studio coadなど)を用いて
、コンテナ内のファイルを編集する(好みにもよるがコンテナ外の環境で開発する層が多い)
という認識をもっています。

大変初歩的な質問で恐れ入りますが、ご回答いただけますとありがたいです。
何卒宜しくお願い致します。

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

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

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

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

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

guest

回答2

0

ざっくり言えば、Dockerのコンテナとは基本的に「アプリケーション」を動かすための「コンテナ(箱)」です。

例えばWEB APIを開発しているとすると、動かす「アプリケーション」はそのWEB APIです。WEB APIを動かすためには、WEBサーバー等のミドルウェアや、更にその下層で動くOSが必要になります。この「WEB API」「WEBサーバー」および「OS(カーネル除く)」を「箱」に詰めて動かすのがDockerコンテナです。

で、開発で使う場合はまだその「WEB API」は作成中なので、Dockerの外(ローカル開発環境)で作った成果物をコンテナにマウント(設置)する事で動かします。

VSCode等は、「今作っている成果物をコンテナにマウントし、コンテナを実行(立ち上げ)する」というところをサポートしてくれるもんだと思えば良いんじゃないでしょうか。

基本的にコンテナの中に入って作業する、なんて事はやりません。
なぜなら、コンテナはすでに作成済みのものであり、中に入って作業しても、一度止めて再起動したら変更したものが元に戻るからです。

変更を永続化したい場合は、その変更したいデータの入ってるディレクトリを予め外部データ領域としてマウントしておくか、利用するコンテナそのものをビルドしなおす必要があります。

投稿2020/04/15 12:40

gentaro

総合スコア8947

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

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

ckr

2020/04/15 14:38

御丁寧にご回答いただき、誠にありがとうございました。gentaro様にご説明いただいたことで、だいぶ腹落ちしました。 基本的にコンテナの中に入って作業する、なんて事はやりません。 なぜなら、コンテナはすでに作成済みのものであり、中に入って作業しても、一度止めて再起動したら変更したものが元に戻るからです。 →コンテナについて再起動すると変更していたファイルが元に戻ってしまうという認識がありませんでした。 大変助かりました、 わかりやすいご説明を、ありがとうございました。 引き続き宜しくお願い申し上げます。
guest

0

ベストアンサー

まずDockerイメージというのは単純にソフトを詰め込んだものだと思ってください。コンテナはその詰め込んだイメージが実行されている環境です。コンテナを立ち上げるのは単純にソフトを動かすのと同じなのでソフトによってやり方は変わります。

例えば実行して一回こっきりで済むソフトであれば外側からソフトを実行すれば良いですし、Webアプリケーションのようなものはずっと動き続けなければいけないので一旦動かしたあと中に入ってちょっといじったりします。

とはいえコンテナの中に入って具体的な開発をする、多くないかと思います。基本的には外側で好みのエディタを使ってソースコードを書きDockerイメージで実行する、という流れになります。なぜわざわざDockerを使って実行するかと言うと、実行するソフトのバージョンや実行環境をメンバー内で統一しやすいからです。

投稿2020/04/15 11:47

A_kirisaki

総合スコア2853

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

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

ckr

2020/04/15 12:19

早速ご回答いただき、ありがとうございました。なるほど、コンテナ外でソースコードを書き、Dockerイメージで実行する、という流れなのですね。Dockerイメージについても理解を深めることができました。 私は今、visual studio コードを用いて開発しているのですが、これはコンテナ外から開発しているということになり、外側から編集したコードについてはDockerのコンテナ側からpullする必要があるということでしょうか? 重ね重ねのご質問、大変申し訳ございませんが、ご確認いただけますと幸いです、 何卒宜しくお願い致します。
A_kirisaki

2020/04/15 12:33

何の言語をお使いですか?おそらくPython、Ruby、PHPなどであればソースコードをDockerのコンテナで動いているインタープリタにわたして実行、Goなどコンパイルする言語であればコードをわたしてコンパイルしてもらってバイナリが出来上がり、そういった流れになるかと思います。
ckr

2020/04/15 12:53

早速のご回答、ありがとうございました。言語についてはrubyを使用しております。 それでは、基本的には現在の開発方法で進め、ソースコードをDockerのインタープリタに渡す(下記のような記事を参考にする)という認識ということですね。たびたびの確認、大変申し訳ございません。 https://pleiades.io/help/pycharm/using-docker-as-a-remote-interpreter.html
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問