4

node、、、、の 4 つのコンテナーがredisありmysqlますdata。実行するdocker-compose rmと、コンテナーを含むすべてのコンテナーが削除されますdata。mysql のデータはコンテナー内にあり、コンテナーを rm したくありませんdata

なぜそのコンテナをrmしなければならないのですか?

ノードとmysqlの構成ファイルをいくつか変更して再構築する必要がある場合があるため、コンテナを削除して最初からやり直す必要があります。

私はグーグルを使って何度も検索しましたが、何も得られませんでした。

4

3 に答える 3

3

現状では、この理由から、データ コンテナーを Docker Compose の外部に保持する必要があります。いずれにせよ、データ コンテナーは実行されるべきではないため、これは理にかなっています。

したがって、データ コンテナーを作成するには、次のようにします。

docker run --name data mysql echo "App Data Container"

echo コマンドが完了し、コンテナーはすぐに終了しますがdocker rm、コンテナーを使用しない限り、コマンドでコンテナーを使用できる--volumes-fromため、Compose で次の操作を実行できます。

db:
  image: mysql
  volumes-from: 
     - data

docker-compose.ymlそして、データ コンテナを起動するためのコードを削除するだけです。

于 2015-04-10T11:04:28.063 に答える
1

Go ( https://github.com/michaelsauter/crane ) で docker-compose の代わりに、contianer グループを作成できます。これには、アプリを再構築するときにデータ コンテナーを無視できるように、既定のグループをオーバーライドすることも含まれます。

次のコンテナとグループを持つ「crane.yaml」があるとします。

containers:
    my-app:
       ...
    my-data1:
       ...
    my-data2:
       ...
groups:
    default:
        - "my-app"
    data:
        - "my-data1"
        - "my-data2"

データ コンテナを一度構築できます。

# create your data-only containers (safe to run several times)
crane provision data   # needed when building from Dockerfile
crane create data

# build/start your app.
crane lift -r  # similar to docker-compose build && docker compose up

# Force re-create off your data-only containers...
crane create --recreate data

PS!docker-compose とは異なり、Dockerfile からビルドする場合でも、「イメージ」を指定する必要があります。プルしない場合、これは docker がローカルでイメージに付ける名前です。また、コンテナー名はグローバルであり、docker-compose のようにフォルダー名のプレフィックスが付いていないことに注意してください。

クレーンには少なくとも 1 つの大きな落とし穴があることに注意してください: 単純に、間違った場所や間違ったスペルのフィールドを無視します! これにより、docker-compose yaml のデバッグが難しくなります。

于 2015-05-23T14:12:21.287 に答える
0

@AdrianMouat Now , I can specify a *.yml file when I starting all container with the new version 1.2rc of docker-compose (https://github.com/docker/compose/releases). just like follows:

file:data.yml

data: image: ubuntu volumes: - "/var/lib/mysql" thinks for your much useful answer

于 2015-04-25T14:18:30.567 に答える