将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个问题:
- 我怎么能移动旧的方式来存储我的数据在本地,持久的容器到现代卷?
- 我的方式的权限总是显得
$ 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
我应该这样做吗? - 我的networking在这里看起来正确吗? 这只能在托pipedocker的机器上看到,或者也可以发布到我的wifinetworking上的所有机器上?
- 除了弱密码,标准端口,默认用户名,例如在这里,还有其他的安全担心,这样做的个人使用,只有我应该知道的?
-
创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
-
权限是正常的。 UID 999是postgres映像创build的
postgres
用户。 -
端口5432将在您的所有docker主机接口上访问。 如果你只想让它在本地主机上可用,请使用
--port 127.0.0.1:5432:5432
-
转到监听本地主机缓解大多数安全问题,直到有人获得访问您的docker主机。 对于一个点来说,一般安全性有点过于宽泛。
- 获取docker引擎运行的主机的IP地址
- 错误:hyperledger / fabric:make gotools:无法识别的导入path“golang.org/x/tools/go/gcexportdata”
- Errno :: EACCES使用Docker Rails图像创buildrails项目
- 重新启动docker守护进程后,无法启动某些容器
- 共享docker集群
- 使用Docker,哪些目录受到磁盘I / O的影响
- jenkins:pipe道docker工作与jenkins文件 – docker常规语法
- 使用Docker进行开发和共享IDE自动完成等function的依赖关系
- 为什么Docker Tomcat无法启动?