docker postgres
https://hub.docker.com/_/postgres/
https://segmentfault.com/a/1190000004518306
docker run --name postgres-slave \
--privileged=true \
-v /home/docker/postgres/data:/home/data/ \
-v /home/docker/postgres/conf:/var/lib/postgresql/data \
-e POSTGRES_USER=xxx \
-e POSTGRES_PASSWORD=xxxxxxxx \
-d -p 15432:5432 postgres
docker run --name postgres --privileged=true -v /home/docker/postgres/data:/home/data/ -v /home/docker/postgres/conf:/var/lib/postgresql/data -e POSTGRES_USER=xxx -e POSTGRES_PASSWORD=xxx -d -p 5432:5432 postgres
-e TZ=“Asia/Shanghai”
-v /etc/localtime:/etc/localtime
都是用来解决容器时区的问题
其中 --name your-postgresql 指的是你的postgresql容器的名字,
--restart=always 停止后自动启动
注:必须指定POSTGRES_PASSWORD(指定超级用户密码)
如果提示ls: cannot access '/docker-entrypoint-initdb.d/': Operation not permitted
原因是CentOS7中的安全模块selinux把权限禁掉了
在运行容器的时候,给容器加特权,及加上 --privileged=true
-v /var/docker/postgres/data:/home/data/的意思是-v 你电脑上的目录/你容器内的目录:
~/Docker/your-postgresql/data是我linux系统存放.sql文件方便容器读取的目录;
/home/data是postgresql容器自带的目录,
这样设置是为了避免权限导致出错,postgresql容器有些目录是只读的,无法写入文件。
如果配错了目录映射会在你想要进行数据库备份、导入/导出时遇到报错:Read-only file system
-e POSTGRES_PASSWORD=xxxxxx的意思是你的数据库密码;
-p 5432:5432 是映射端口;
配置后可以通过5432端口远程连接电脑的5432端口链接到postgresql容器。
修改远程管理配置
vi /var/docker/postgresql/data/pg_hba.conf