参考:https://hub.docker.com/r/centos/postgresql-96-centos7/
一、安装docker
二、下载基础镜像
docker pull centos/postgresql-96-centos7
三、在任意路径新建进行数据共享的文件夹,并修改权限
我需要创建一个dockDB文件夹用于同步容器内的数据库数据存储,一个dockerAPP文件夹用于我要在容器内运行的应用程序。因为该镜像启动容器后用progres用户(uid=26,gid=26)操作数据库,所以宿机的文件夹权限必须设置好。有以下两种方法:
一是将路径权限修改为其他用户可读可写可执行(因为我的路径下有可执行程序)
chmod 777 dockerAPP -R
chmod 777 dockerDB -R
另一种方法比较麻烦,是root创建一个uid=26,gid=26的用户udocker再切换至该用户执行
#创建udocker组,gid为26
groupadd -g 26 udocker
#创建udocker用户
useradd -u 26 -g 26 -d /home/udocker -m udocker
(删除用户: userdel -r -f udocker)
#避免每次使用sudo操作docker命令,进行以下操作,执行完命令后重启docker服务
groupadd -g 999 docker
usermod -aG docker udocker
systemctl restart docker
四、运行一个普通容器挂载数据卷
docker run -v /home/dockerDB:/var/lib/pgsql/data \
-v /home/dockerAPP:/home/bigData \
–name volLSS \
centos/postgresql-96-centos7 /bin/bash
五、运行再一个容器启动镜像,并使用上述数据卷
docker run -d –name labss \
-e POSTGRESQL_ADMIN_PASSWORD=postgres \
-e POSTGRESQL_USER=xx \
-e POSTGRESQL_PASSWORD=xx \
-e POSTGRESQL_DATABASE=xx \
-p 5432:5432 \
-p 7777:7777 \
-p 7654:7654 \
–volumes-from volLSS \
centos/postgresql-96-centos7
设置postges的密码为postgres,创建数据库用户xx,密码xx,创建名为xx的数据库,映射宿主机端口至容器内,5432端口为postgresql数据库端口,其余为我的应用程序需要监听的端口。
六、进入运行中的容器
docker exec -it labss /bin/bash