Docker安装PostGIS,端口无法映射问题处理

PostGIS是个开源的软件,是 Postgres数据库的一款扩展插件,主要用于实现空间数据库,提供了存储空间地理数据的支持,能够进行空间数据管理、数量测量与几何拓扑分析。

因工作需要用到QGIS软件,为了避免每次都要到一次工参的麻烦,又不想在本地笔记本电脑上安装数据库软件,因此打算在openEuler的Docker上安装个PostGIS,方便日常工作使用。

本文主要参考了这位大佬的文档,非常感谢作者的分享。

https://juejin.cn/post/6844903661886242824

Docker上安装PostGIS

1、创建本地文件

命令:mkdir postgre_data && cd postgre_data

2、安装PostGIS

大佬的命令:

docker run –name=postgis -d -e POSTGRES_USER=sde -e POSTGRES_PASS=sde -e POSTGRES_DBNAME=gis -e ALLOW_IP_RANGE=0.0.0.0/0 -p 5432:5432 -v /root/postgre_data:/var/lib/postgresql –restart=always kartoza/postgis:9.6-2.4

大佬的命令在执行后,容器启动后无端口信息,无端口绑定,docker也无法访问,Google一下,有人建议将端口映射命令放在 –name= 前面 也就是一下的命令形式

docker run -p 5432:5432 –name=postgis -d -e POSTGRES_USER=sde -e POSTGRES_PASS=sde -e POSTGRES_DBNAME=gis -e ALLOW_IP_RANGE=0.0.0.0/0 -v /root/postgre_data:/var/lib/postgresql –restart=always kartoza/postgis:9.6-2.4

按照这种方式Pull镜像后,还是无法正常运行,没有端口绑定信息。

查看log信息发现提示:initdb: could not access directory “/var/lib/postgresql/9.6/main”: Permission denied

提示无目录访问权限,查看data的目录权限

修改下目录权限,再重启docker,就可以正常绑定端口了。

openEuler安装docker及Portainer

在虚拟机上测试了一段时间的openeuler,发现还蛮好用的,主要是系统文档非常详细,系统本身的资源调度较好,在1G内存的机器上运行速度也还可以,准备安装到群晖虚拟机上,做docker应用服务器用。

一、openEuler的安装

安装很简单,基本和Centos一样,只是需要注意的一点是,安装时候选择最小安装时把基本那项勾选上,不然后面常用的tools还得一个个装回去,太蛮烦。

官方文档的网络配置很详细,我这边直接用nmtui命令,系统安装时候我设置了静态IP,只要激活下网卡,重启后就正常可用了。配置好网络后,更新下系统,这个基本属于开箱即用的,openEuler的默认源速度还是可以的,所以没有修改就直接用了。

二、openEuler安装个cockpit

openEuler默认是安装cockpit,所以只要start一下就可以了

使用命令:systemctl start cockpit

加入开机启动:systemctl enable cockpit.socket

cockpit默认端口为9090,防火墙默认没有开放,需要在防火墙添加下9090端口

使用命令:firewall-cmd –zone=public –add-port=9090/tcp

浏览器方位 https://IP:9090 即可正常访问,账号密码为系统账号密码

二、openEuler安装docker

一条命令就可以了:yum install docker

docker安装完毕,查看下docker的版本,openEuler默认是18.09.0的版本。

三、在docker 安装Portainer

Portainer 是docker的一个图形化管理工具,可以用来快速部署docker容器,查看日志等功能,强烈推荐和我一样的新手安装。

安装命令:

docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock --restart=always --name portainer portainer/portainer

防火墙添加下 9000端口:firewall-cmd –zone=public –add-port=9000/tcp

Docker安装mongodb,退出代码132

心血来潮,打算部署个rocket.chat服务器,在docker上安装Mongodb时出现,运行几秒后停止,报退出代码132(Exited (132)。

查询运行日志,看到为Mongodb 版本为5.0,CPU不支持AVX指令集导致无法运行

我CPU是Intel的J1900,Google了一下,妈的,果然不支持AVX。

在Google一圈后,发现Mongodb 4.4.9 版本是构架不需要AVX指令集,用portainer重新安装4.4.9版本就可以顺利安装了。

ubuntu20.04配置apt代理

在国内访问Docker的镜像服务器是特别慢的,有时候需要给Server配置下代理服务器以方便快速安装某些功能,做下记录

sudo vi /etc/apt/apt.conf

然后输入一下代码:

Acquire::http::Proxy "http://192.168.123.230:7890";
Acquire::https::Proxy "http://192.168.123.230:7890";

具体的代理IP地址以实际为准,我这边是我的另外一台设备的clash的代理。

群晖安装Windows XP

为了方便在办公室里远程回来管理家里的其他服务器设备,虽然可以直接把路由器的端口暴露在公网上,但毕竟不是很安全,于是,打算在群晖的VMM里面安装一台Windows xp,方便远程桌面访问,你问我为什么不用Windows 7,开玩笑,4G内存的群晖是没资格用Windows 7的好吧。

群晖里安装Windows xp 很容易,这里不再赘述,主要问题在于安装Windows xp发现显卡,网卡驱动全部找不到。

一堆的驱动问题

安装群晖提示,在安装Synology_VMM_Guest_Tool后系统依旧存在找不到驱动的情况。

经过Google的一番搜索,终于找到解决。How-to Install WinXP in the Virtual Machine Manager (VMM) : synology (reddit.com)

需要在虚拟机进行设置。然后再安装 Synology_VMM_Guest_Tool 。

  1. “视频卡”设置为cirrus
  2. 网卡设置为:virtio
“视频卡”设置为cirrus
“视频卡”设置为cirrus网卡设置为:virtio

设置后保存,重新开启Windows xp后,可以看到开始提醒发现新的硬件,按照提示安装驱动即可正常使用。

一个可以本地解码的jellyfin客户端

作为轻度垃圾佬,黑群晖的NAS当然是咸鱼上捡回来的蜗牛星际,300块,包爽快。

已不推荐使用jellyfin-mpv-shim,请拉到页面下方,推荐使用jellyfin Media Player

J1900的CPU也只能凑合,但硬盘里有一堆不能形容的片片又基本是MKV格式的,在N1上看的时候,KODI本地硬解码,对CPU的要求不算严格,但上班摸鱼要用web页面看剧或者手机客户端来看MKV格式的视频基本是无解了,CPU啪的一下啊很快啊就100%。

上网搜索一圈,发现了一款for Windows的专用的jellyfin播放软件jellyfin-mpv-shim 是可以现实本地解码功能,目前最新版本为1.10.4。

安装上基本没什么,但这里却有一个很奇葩的BUG,记录下来,避免下次踩坑。

我的jellyfin采用了https的访问方式,所以当你在配置的时候填写URL地址为 https://XXXXXXXXX:8920 系统是可以登录的,也可以访问jellyfin的页面,但是无法播放内容,需要更换为非加密的http页面,可能是bug,也可能是我的配置有问题。但总之改过来后就正常了。

——————————————-我是疯哥线——————————————————–

2022年更新

事实上,在写完这个blog后我就找到了jellyfin Media Player,相对于jellyfin-mpv-shim 他好用太多了。建议大家下载这个版本的客户端,目前最新的版本是V1.70版本。