Docker hub包含多个版本(标签)的Postgres db,例如:
postgres版本12.3和12.3-alpine有什么不同?
7y4bm7vi1#
Alpine是一个小得多的Linux版本,它比完整的postgres映像的容器更小。有人认为,由于它的小尺寸,alpine也更安全。尽管alpine的一个缺点是它包含的功能比运行完整Linux操作系统的docker映像少得多。
nhhxz33t2#
postgres:12.3
postgres:12.3-alpine
主要是图像大小和内容不同:
vh0rcniy3#
在为数据库选择Docker映像时,你应该非常小心。事实上,Alpine和Debian中的PostgreSQL使用了不同的排序规则。一些Alpine图像使用不支持LC_COLLATE的musl库版本(1.1.16),因此尽管设置了LANG变量,但仍将按字节(C)排序数据。LC_COLLATE应添加到musl版本1.1.17但这会造成灾难性的问题:只要musl支持LC_COLLATE,所有Postgres VARCHAR索引都将中断。更多讨论请参见:
我自己也试过:从postgres出发:13-阿尔卑斯山
postgres=# select 'a' > 'A'; ?column? ---------- t (1 row) postgres=# select 'a' < 'A'; ?column? ---------- f (1 row)
从postgres:13
postgres=# select 'a' > 'A'; ?column? ---------- f (1 row) postgres=# select 'a' < 'A'; ?column? ---------- t (1 row)
3条答案
按热度按时间7y4bm7vi1#
Alpine是一个小得多的Linux版本,它比完整的postgres映像的容器更小。有人认为,由于它的小尺寸,alpine也更安全。尽管alpine的一个缺点是它包含的功能比运行完整Linux操作系统的docker映像少得多。
nhhxz33t2#
postgres:12.3
基于Debian:postgres:12.3-alpine
基于Alpine主要是图像大小和内容不同:
vh0rcniy3#
在为数据库选择Docker映像时,你应该非常小心。事实上,Alpine和Debian中的PostgreSQL使用了不同的排序规则。
一些Alpine图像使用不支持LC_COLLATE的musl库版本(1.1.16),因此尽管设置了LANG变量,但仍将按字节(C)排序数据。
LC_COLLATE应添加到musl版本1.1.17
但这会造成灾难性的问题:只要musl支持LC_COLLATE,所有Postgres VARCHAR索引都将中断。
更多讨论请参见:
我自己也试过:
从postgres出发:13-阿尔卑斯山
从postgres:13