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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Docker

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

Q&A

解決済

1回答

2380閲覧

dockerでボリュームにマウントしたディレクトリを変更したい

program_muzui

総合スコア4

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Docker

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

0グッド

0クリップ

投稿2020/08/29 07:38

前提・実現したいこと

ボリュームにマウントしたディレクトリを変更したい

発生している問題・エラーメッセージ

Dockerfileでボリュームのディレクトリにいくら変更を加えたところで、立ち上げ時(docker-compose up)には変更前に戻ってしまうと思います。

なので、ボリュームマウントフォルダに対して、
・node_moduleのインストール(依存関係が消える)
・パーミッションの変更
・所有者の変更
などを行いたい場合、「docker-compose up」後にコンテナに入って変更を加える必要があると思います。
しかし、コンテナに入って変更を加えたらコンテナ削除時にその変更も一緒に消えてしまいます。
コンテナ削除後の再構築で手順漏れが発生する可能性があるので避けたいです。

対策として「docker-compose up」後に処理を行うDockerfileのCMDコマンドがありますが、一部のイメージでは書き換えると立ち上がらなくなりました。
例えば、centos7ならCMDに「/sbin/init」が入れないと動きませんでした。
「/sbin/init」をシェルの中に入れて実行できず。

なのでCMDコマンド以外で回避策を知りたいのですが、何かありますでしょうか?

補足情報(FW/ツールのバージョンなど)

windows 10 pro(Hyper-V)
docker for windows 2.3.0.4
engine 19.03.12
docker-compose version 3

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

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

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

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

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

gentaro

2020/08/29 12:58

単純にdocker volumeで新しくボリューム作って割り当て直せば良いだけじゃ? というか、volumeは永続化を目的に作成するので、変更前に戻るというのがよくわかない。 どんな使い方してるんだろ。 docker-compose.ymlとか質問文に貼って実行しているコマンドも具体的に提示したほうが良さげ。
dameo

2020/08/31 21:28

Dockerfileはimageを作成するためのファイルです。 dockerは起動すると、imageを元にcontainerを作成して実行します。 containerは自身の中のファイルだけでなく、volumeをマウントすることができ、gentaroさんのおっしゃるようにcontainerとはライフタイムの違うサイクルで中のファイルを維持したり、他のコンテナと共有することができます。 containerは終了(Exit)した時点では、自身の変更したファイルを記録しており、commitすることで新しいイメージとして残すことも出来ますが、docker-composeなどのツールを使用した場合や、通常の操作ではcommitせずに消去してしまうのが慣例です。 まずはドキュメントをよく読み、正確な理解を目標としましょう。 質問をしたい場合は、もっと具体的な操作手順や、実際に動作するファイルが必要です。
guest

回答1

0

自己解決

gentaro,dameoさん

お二方とも、お答えありがとうございます。
volumeはデータ永続化が目的で、そのディレクトリを変更するものではないのですね。

次から詳しい事象を付けて質問します。

投稿2020/09/04 05:43

program_muzui

総合スコア4

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問