0

の出現で

docker volume create

ストレージのみのコンテナーの場合、dockerfile を使用しない小さなアプリケーションのマシンで postgres を実行する古い方法をまだ使用しています。

# MAKE MY DATA STORE
STORAGE_DIR=/home/username/mydockerdata/pgdata
docker create -v $STORAGE_DIR:/var/lib/postgresql/data --name mypgdata ubuntu true

# CREATE THE PG
docker run --name mypg -e POSTGRES_PASSWORD=password123 -d -p 5432:5432 --volumes-from mypgdata library/postgres:9.5.4

# RUN IT
docker start mypg
# docker stop mypg

4 つの質問があります。

  1. データをローカルの永続的なコンテナーに保存する古い方法を最新のボリュームに移行するにはどうすればよいですか?
  2. 私のやり方はいつも奇抜に思えます: これを別の方法で行うべきですか? $ ls -lah $STORAGE_DIR/.. drwx------ 19 999 root 4.0K Aug 28 10:04 pgdata
  3. 私のネットワークはここで正しく見えますか? これは、docker をホストしているマシンでのみ表示されますか、それとも、wifi ネットワーク上のすべてのマシンにも公開されますか?
  4. 脆弱なパスワード、標準ポート、デフォルトのユーザー名以外に、たとえばここで、個人的な使用のみを目的としてこれを行う場合に注意すべきセキュリティ上の懸念はありますか?
4

1 に答える 1

1
  1. 新しいボリュームを作成し、データをコピーします。次に、新しいボリューム定義でコンテナーを実行します。

    docker volume create --name mypgdata
    docker run --rm \
      -v $STORAGE_DIR:/data \
      -v mypgdata:/datanew ubuntu \
      sh -c 'tar -C /data -cf - . | tar -C /datanew -xvf -'
    docker run --rm -v mypgdata:/data ubuntu ls -l /data
    
  2. 権限は正常です。UID 999 は、postgres イメージが作成postgresするユーザーです。

  3. ポート 5432 は、すべての Docker ホスト インターフェイスでアクセス可能になります。ローカルホストでのみ使用できるようにする場合は、次を使用します--port 127.0.0.1:5432:5432

  4. localhost でリッスンするように移行すると、誰かが Docker ホストにアクセスできるようになるまで、ほとんどのセキュリティの問題が緩和されます。一般的なセキュリティは、ドット ポイントとしては少し広すぎるトピックです。

于 2016-08-29T21:54:03.337 に答える