sql >> データベース >  >> RDS >> PostgreSQL

Dockerボリュームはデータを保持しません

    私を混乱させる何かがあり、私にとっては公式文書ではあまり明確ではありませんでした。

    私の知る限り、永続ボリュームは3つで作成できます。 方法。

    • コンテナの呼び出し時 フルパスを含む(-v ~/database:/data ):ホストの外部フォルダーをDockerコンテナー内で使用できるようにします。どちらも変更できます。
    • コンテナの呼び出し時 ボリューム名を使用する(-v datamysql:/data ):永続的なボリュームをコンテナ内で使用できるようにします。存在しなかった場合に作成されます。 docker volume lsを使用して名前で一覧表示できます 。内部的には、/var/lib/docker/volumes/ae4445f7c9317a22fe84726fb894c47754f38a7fd150c00fd877024889968750/_dataなどの場所に保存されます。 。
    • コンテナのビルド時VOLUME ["/database/data"] Dockerfileで)。 docker runを呼び出すたびに コンテナを削除しても存続する新しいボリュームを作成します。後続の呼び出しは異なる結果になるため、これは混乱を招く可能性があります。 再利用されない作成中のボリューム。

    名前付き(2番目のケース)と名前なし(3番目のケース)の両方のボリュームを

    で一覧表示できます。
    $ docker volume ls                                                             
    DRIVER              VOLUME NAME                                                             
    local               064593b3e65977097d4d0c8402a6c633f1af69be2937bf118678ab8f97ee9a7e               
    local               4753ad0437d13e54c76d9c34a30a1843396a1866a0cf9237d500fdcca0d78c5f           
    local               8d7a35354f666b2e8a26866a35bbae36bb9601701d4c6b505ab8ce6629f69415               
    local               db48eefe8f189b36107ca9c4eebb792690590ab0ba055e7e4e2c9adfd1765b7e                    
    local               datamysql
    

    docker inspect mycontainerを使用すると、コンテナのボリュームの正確な場所を確認できます。

    {
                    "Type": "volume",
                    "Name": "8d7a35354f666b2e8a26866a35bbae36bb9601701d4c6b505ab8ce6629f69415",
                    "Source": "/media/USBdrive/docker/volumes/8d7a35354f666b2e8a26866a35bbae36bb9601701d4c6b505ab8ce6629f69415/_data",
                    "Destination": "/var/lib/mysql",
                    "Driver": "local",
                    "Mode": "",
                    "RW": true,
                    "Propagation": ""
                },
    

    未使用のボリュームを削除すると便利な場合があります(特に3番目の場合)。

    $ docker volume prune
    WARNING! This will remove all volumes not used by at least one container.
    Are you sure you want to continue? [y/N] y
    Deleted Volumes:
    4753ad0437d13e54c76d9c34a30a1843396a1866a0cf9237d500fdcca0d78c5f
    
    Total reclaimed space: 205MB
    

    VOLUMEを使用したため Dockerfileのディレクティブ、3番目のケースです。コンテナを調べてファイルを探し、繰り返しセッションでデータを保持する場合は、コマンドラインからボリュームを指定します。



    1. phpを使用してXMLデータを解析し、mysqlデータベースに配置します

    2. INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOINの違いは何ですか?

    3. mysqlカーソルとイテレータについて

    4. 存在しないフィールドの整合性エラーを解決するにはどうすればよいですか?