将Docker上的PostgreSQL持久存储转换为现代docker存储

随着

docker volume create 

对于仅存储容器 ,我仍然使用旧的方式在我的机器上运行postgres,以查找没有dockerfile的小应用程序:

 # 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
    $ ls -lah $STORAGE_DIR/.. drwx------ 19 999 root 4.0K Aug 28 10:04 pgdata
    $ ls -lah $STORAGE_DIR/.. drwx------ 19 999 root 4.0K Aug 28 10:04 pgdata
    我应该这样做吗?
  3. 我的networking在这里看起来正确吗? 这只能在托pipedocker的机器上看到,或者也可以发布到我的wifinetworking上的所有机器上?
  4. 除了弱密码,标准端口,默认用户名,例如在这里,还有其他的安全担心,这样做的个人使用,只有我应该知道的?

  1. 创build一个新卷并复制数据。 然后用新的卷定义运行你的容器。

     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映像创build的postgres用户。

  3. 端口5432将在您的所有docker主机接口上访问。 如果你只想让它在本地主机上可用,请使用--port 127.0.0.1:5432:5432

  4. 转到监听本地主机缓解大多数安全问题,直到有人获得访问您的docker主机。 对于一个点来说,一般安全性有点过于宽泛。