Copyright © 2019–2025 OpenLink Software
请注意:只有 repository/docker/openlink/ 中的Docker容器是直接来自 OpenLink Software。我们建议使用这些容器镜像,除非您需要经过编辑的克隆版本提供的特定功能,此时也建议告知我们您的需求及满足情况,以便我们确保您获得最佳的Virtuoso使用体验。
如遇任何问题,请向 OpenLink社区论坛 或 Virtuoso开源项目 报告。
如果您有支持合同,还可以通过 OpenLink支持网站创建支持案例。
要将最新的Virtuoso 7.2 Docker镜像拉取到本地系统,可使用以下命令:
sh$ docker pull openlink/virtuoso-opensource-7
要检查Virtuoso二进制文件的版本,可使用以下命令:
sh$ docker run openlink/virtuoso-opensource-7 version [openlink/virtuoso-opensource-7:7.2.13-r19-g8273aad-ubuntu] 此Docker镜像使用的Virtuoso版本如下: Virtuoso Open Source Edition (Column Store) (multi threaded) Version 7.2.13.3240-pthreads as of Jun 10 2024 (a1fd8195b) Compiled for Linux (x86_64-ubuntu_focal-linux-gnu) Copyright (C) 1998-2024 OpenLink Software
以下是在系统上创建新Virtuoso实例的快速示例:
sh$ mkdir my_virtdb $ cd my_virtdb $ docker run \ --name my_virtdb \ --interactive \ --tty \ --env DBA_PASSWORD=mysecret \ --publish 1111:1111 \ --publish 8890:8890 \ --volume `pwd`:/database \ openlink/virtuoso-opensource-7:latest
这将在my_virtdb子目录中创建一个新的Virtuoso数据库,并启动Virtuoso实例,HTTP服务器监听8890端口,ODBC/JDBC/ADO.Net/OLE-DB/ISQL数据服务器监听1111端口。
Docker镜像以前台模式(使用-i或--interactive)运行,因此您可以查看其运行状态。
现在,您应该可以通过以下URL访问Virtuoso HTTP服务器:
http://localhost:8890/
在该终端会话中按CTRL和C键可关闭Virtuoso。
创建新数据库时,Docker镜像将使用环境变量DBA_PASSWORD和DAV_PASSWORD设置**dba和dav**用户账户的密码。
如果未设置DBA_PASSWORD环境变量,将为**dba**用户账户分配随机密码,并存储在Docker内部文件系统的/settings/dba_password中。
如果未设置DAV_PASSWORD环境变量,其值将设为DBA_PASSWORD,并存储在/settings/dav_password中。
这些文件仅对启动镜像的用户可读。可使用以下命令查看随机生成的密码:
sh$ docker exec -i -t my_virtdb cat /settings/dba_password
若无此密码,您将无法使用isql工具或Virtuoso Conductor登录dba账户。
注意:建议用户在将dba密码更改为其他值后立即删除此文件,可通过Conductor Web界面或isql命令进行修改。
为保留对Virtuoso数据库的更改,数据库文件应存储在主机文件系统上。
Docker镜像公开/database卷,可轻松映射到文件系统上的本地目录。如果该目录为空,Docker镜像将在映射目录中放入初始的virtuoso.ini,然后创建新数据库。
当Docker镜像以前台模式(带-i或--interactive)运行时,在该终端会话中按CTRL和C键可关闭Virtuoso。也可在其他终端使用以下命令:
sh$ docker stop my_virtdb
使用docker run或docker create命令在本地系统注册Docker镜像后,可使用以下命令在后台启动它:
sh$ docker start my_virtdb
如果希望以前台模式运行实例,可使用:
sh$ docker start -i -a my_virtdb
如果Docker镜像以后台模式(不带-i或--interactive)启动,可通过以下命令查看virtuoso进程的最近输出:
sh$ docker logs my_virtdb
要连接到运行中的Virtuoso实例,可使用以下命令:
sh$ docker exec -i my_virtdb isql 1111
系统将提示输入dba账户密码。
注意:如果多次提供错误密码,Virtuoso将锁定dba账户几分钟。
如果映射目录包含virtuoso.ini和相关数据库文件,新的Docker镜像将尝试使用这些文件。
注意:virtuoso.ini中引用的目录路径应相对于Docker镜像的内部目录结构才能正常工作。
要将最新的Virtuoso 7.2 Docker镜像拉取到本地系统,可使用以下命令:
sh$ docker pull openlink/virtuoso-opensource-7
要检查Virtuoso二进制文件的版本,可使用以下命令:
sh$ docker run openlink/virtuoso-opensource-7 version [openlink/virtuoso-opensource-7:7.2.13-r19-g8273aad-ubuntu] 此Docker镜像使用的Virtuoso版本如下: Virtuoso Open Source Edition (Column Store) (multi threaded) Version 7.2.13.3240-pthreads as of Jun 10 2024 (a1fd8195b) Compiled for Linux (x86_64-ubuntu_focal-linux-gnu) Copyright (C) 1998-2024 OpenLink Software
OpenLink Virtuoso Open Source Edition Docker镜像公开了多个可配置或映射到本地机器的资源。
1111此端口可映射以提供对Docker镜像的外部访问,以便使用任何Virtuoso客户端提供程序(如ODBC、JDBC、ADO.Net、OLE-DB、iSQL)从主机系统或其他Docker镜像连接。
如果要在同一主机系统上运行多个Docker镜像,可使用-p或--publish命令行选项将本地系统上的空闲端口(如1112)映射到Docker系统上的默认isql端口1111。
sh$ docker create ..... ... --publish 1112:1111 \ ...
8890此端口可映射以提供对Virtuoso HTTP服务器的外部访问。
如果要在同一主机系统上运行多个Docker镜像,可使用-p或--publish命令行选项映射本地系统上的空闲端口。例如,要将此镜像作为默认Web服务器,可将主机的80端口映射到Docker系统上的默认HTTP端口8890。
sh$ docker create ..... ... --publish 80:8890 \ ...
Docker镜像启动后,可在浏览器中使用以下URL连接Virtuoso:
http://localhost/
/database此卷包含virtuoso.ini、virtuoso.lic以及Virtuoso数据库使用的所有文件。
创建或运行任何Docker容器时,有两个参数对数据持久化至关重要:
使用-n或--name参数的命名与未命名容器
使用-v或--volume参数的映射或未映射卷
如果创建Docker镜像时未指定容器名称(未命名容器)和卷映射,容器停止后此Docker镜像将被销毁,虽然目录不会立即从主机文件系统中删除,但可能难以定位和恢复其中的数据。
只要至少使用--name参数,Docker容器即可停止和重启而不会丢失数据。
如果创建Docker镜像时未将卷映射到硬盘上的本地目录,Docker系统将在其自身文件系统中创建目录(在Linux上,Docker镜像位于/var/lib/docker/containers下)。如果文件系统不够大,或要升级到新版本镜像而不丢失现有数据,这可能会导致问题。使用未命名卷还会在升级到新版本Docker镜像时保留现有数据库带来困难。
虽然在某些情况下可能倾向于使用未命名容器和映射卷,但建议在创建的所有Virtuoso容器上同时使用--name和--volume参数。
/initdb.d此目录可包含shell(.sh)和Virtuoso PL(.sql)脚本的混合,可执行以下功能:
VAD软件包脚本仅在初始数据库创建时运行一次;Docker镜像后续重启不会重新运行这些脚本。
脚本按字母顺序运行,因此建议脚本名称以序号开头,以明确顺序。
出于安全考虑,Virtuoso将以特殊模式运行.sql脚本,且不会响应其SQL(1111)和/或HTTP(8890)端口上的连接。
每个.sql脚本结束时,Virtuoso会自动执行checkpoint,以确保更改完全写回数据库。这对于使用批量加载函数rdf_loader_run()或手动更改数据库ACID模式的脚本非常重要。
所有初始化脚本运行完成后,Virtuoso将正常启动,并开始监听其SQL(1111)和HTTP(8890)端口上的请求。
DBA_PASSWORD_FILE此环境变量应与向Docker镜像传递敏感信息的安全选项结合使用。启动脚本将读取Docker内部文件系统上此文件的内容,并在内部将其分配给DBA_PASSWORD环境变量。在此情况下,DBA_PASSWORD设置不会记录在Docker实例的元数据中。
示例:
sh$ echo -n 'verysecretpw' | docker secret create dba_secret - $ docker service create .... \ ... --secret dba_secret \ --env DBA_PASSWORD_FILE=/run/secrets/dba_secret \ ...
另请参见:
DAV_PASSWORD_FILE详情参见DBA_PASSWORD_FILE。
DBA_PASSWORD如果通过命令行选项-e、--env、--env-file或.yml文件的**environment部分设置此环境变量,其值将在创建新数据库时被分配为dba**账户的初始密码。
如果此变量设置为ami-id,Docker镜像将尝试从Amazon AMI上的EC2注册表获取此值。如果失败或此Docker容器未在AMI上启动,该变量将被视为未设置。
如果未设置此变量,将为dba账户生成随机密码并分配为初始密码。
密码将存储在Docker容器内的/settings/dba_password中,建议在通过Conductor Web界面或isql命令将dba密码更改为其他值后删除此文件。
示例:
sh$ docker create ..... ... --env DBA_PASSWORD=mysecret \ ...
注意:由于环境变量存储在Docker镜像的元信息中,初始密码容易被能够运行docker inspect命令的同一台机器上的所有用户看到。如果这可能成为问题,建议结合使用“docker secrets”选项和DBA_PASSWORD_FILE选项。
DAV_PASSWORD如果通过命令行选项-e、--env、--env-file或.yml文件的**environment部分设置此环境变量,其值将在创建新数据库时被分配为dav**账户的初始密码。
如果未设置此变量,将使用DBA_PASSWORD设置的值同时用于dba和dav账户。
密码将存储在Docker容器内的/settings/dav_password中,建议在通过Conductor Web界面或isql命令将dav密码更改为其他值后删除此文件。
VIRTUOSO_LIC_FILE此环境变量与向Virtuoso闭源Docker镜像传递敏感信息的安全选项结合使用。启动脚本将读取Docker内部文件系统上此文件的内容,并将其复制到/database/virtuoso.lic文件。
另请参见:
VIRTUOSO_INI_FILE此环境变量与向Docker镜像传递信息的以下选项结合使用。启动脚本将读取Docker内部文件系统上此文件的内容,并将其复制到/database/virtuoso.ini文件,而不是安装Virtuoso安装中的默认virtuoso.ini文件。
请注意,virtuoso.ini中的所有路径设置都应基于Docker镜像的内部文件系统结构,不能直接引用主机系统上的目录路径。可使用--mount等命令行选项将主机系统的其他目录绑定挂载到Docker实例中。
安装virtuoso.ini文件后,启动脚本将解析环境变量,以允许按下一段所述对virtuoso.ini文件进行其他更新。启动脚本还将重写[Plugin]部分,以启用hosting目录中安装的所有插件。
另请参见:
virtuoso.ini使用-e、--env、--env-file命令行选项或.yml文件的**environment**部分创建Virtuoso Docker实例时,可添加或覆盖virtuoso.ini文件中的任何参数。
这些环境变量的命名格式如下:
VIRT_SECTION_KEY=VALUE
其中:
VIRT是用于将此类变量分组的公共前缀 (始终为大写)SECTION是virtuoso.ini中的[section]名称 (不区分大小写)KEY是节中的键名 (不区分大小写)VALUE是要写入键的文本 (区分大小写)这些变量名称的SECTION和KEY部分可以大写(最常用)或混合大小写编写,无需与virtuoso.ini中使用的大小写完全匹配。对SECTION和KEY名称部分不进行验证,因此任何错误都可能导致设置无法正常工作。
以下名称均引用相同的设置:
VIRT_Parameters_NumberOfBuffers(与virtuoso.ini中的节和键名大小写匹配)VIRT_PARAMETERS_NUMBEROFBUFFERS(推荐的环境变量命名方式)VIRT_parameters_numberofbuffers(可选)VALUE是区分大小写的字符串,如果包含空格或其他特殊字符,应使用单引号(')或双引号(")括起来。
如果VALUE设置为'-',则SECTION中的KEY条目将被删除。
示例:
sh$ docker create .... \ ... \ -e VIRT_PARAMETERS_NUMBEROFBUFFERS=100
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429