
。除非在Kubernetes等环境中使用mTLS sidecar,否则不建议禁用TLS,因为这会导致连接不安全。
挂载自定义数据库文件
运行Docker镜像时,可挂载自定义DuckDB数据库文件(数据库必须使用DuckDB 1.1.1版本构建):
前提条件:安装DuckDB CLI 1.1.1版本并确保可执行文件在PATH中。
平台下载链接:
生成TPC-H Scale Factor 1 (1GB)数据库文件并挂载运行:
bash# 在主机的/tmp目录生成TPC-H数据库 pushd /tmp duckdb ./tpch_sf1.duckdb << EOF .bail on .echo on SELECT VERSION(); INSTALL tpch; LOAD tpch; CALL dbgen(sf=1); EOF # 运行sqlflite容器并挂载主机数据库文件 docker run --name sqlflite \ --detach \ --rm \ --tty \ --init \ --publish 31337:31337 \ --env TLS_ENABLED="1" \ --env SQLFLITE_PASSWORD="sqlflite_password" \ --pull missing \ --mount type=bind,source=$(pwd),target=/opt/sqlflite/data \ --env DATABASE_FILENAME="data/tpch_sf1.duckdb" \ voltrondata/sqlflite:latest
运行初始化SQL命令
可通过设置INIT_SQL_COMMANDS环境变量指定启动时执行的SQL命令(用分号分隔):
bashdocker run --name sqlflite \ --detach \ --rm \ --tty \ --init \ --publish 31337:31337 \ --env TLS_ENABLED="1" \ --env SQLFLITE_PASSWORD="sqlflite_password" \ --env PRINT_QUERIES="1" \ --env INIT_SQL_COMMANDS="SET threads = 1; SET memory_limit = '1GB';" \ --pull missing \ voltrondata/sqlflite:latest
也可通过INIT_SQL_COMMANDS_FILE环境变量指定包含SQL命令的文件路径(文件需挂载到容器内)。
注意:对于DuckDB后端,会自动执行以下初始化命令:
SET autoinstall_known_extensions = true; SET autoload_known_extensions = true;注意:返回结果的SELECT语句不会显示结果;执行失败的初始化命令会导致服务器中止并退出非零代码。
通过JDBC连接
下载Apache Arrow Flight SQL JDBC驱动,使用以下JDBC连接字符串:
bashjdbc:arrow-flight-sql://localhost:31337?useEncryption=true&user=sqlflite_username&password=sqlflite_password&disableCertificateVerification=true
注意:若重启容器后使用相同密码连接JDBC可能出现"Invalid bearer token provided"错误,需修改
SQLFLITE_PASSWORD环境变量并使用新密码连接。
通过ADBC Python Flight SQL驱动连接
ADBC提供比JDBC更好的性能,减少序列化/反序列化,保持数据列格式。
安装依赖:
bash# 创建Python虚拟环境 python3 -m venv .venv # 激活虚拟环境 . .venv/bin/activate # 安装依赖 pip install --upgrade pip pip install pandas pyarrow adbc_driver_flightsql # 启动Python交互shell python
在Python shell中执行:
pythonimport os from adbc_driver_flightsql import dbapi as sqlflite, DatabaseOptions with sqlflite.connect(uri="grpc+tls://localhost:31337", db_kwargs={"username": os.getenv("SQLFLITE_USERNAME", "sqlflite_username"), "password": os.getenv("SQLFLITE_PASSWORD", "sqlflite_password"), DatabaseOptions.TLS_SKIP_VERIFY.value: "true" # 使用可信CA签名证书时不需要 } ) as conn: with conn.cursor() as cur: cur.execute("SELECT n_nationkey, n_name FROM nation WHERE n_nationkey = ?", parameters=[24] ) x = cur.fetch_arrow_table() print(x)
预期结果:
textpyarrow.Table n_nationkey: int32 n_name: string ---- n_nationkey: [[24]] n_name: [["UNITED STATES"]]
通过sqlflite_client CLI工具连接
sqlflite_client CLI工具已内置于Docker镜像,也可作为独立可执行文件下载:
bashsqlflite_client \ --command Execute \ --host "localhost" \ --port 31337 \ --username "sqlflite_username" \ --password "sqlflite_password" \ --query "SELECT version()" \ --use-tls \ --tls-skip-verify
预期结果:
textResults from endpoint 1 of 1 Schema: version(): string Results: version(): [ "v1.1.1" ] Total: 1
通过Ibis连接
详见:https://github.com/ibis-project/ibis-sqlflite
通过SQLAlchemy连接
详见:https://github.com/prmoore77/sqlalchemy-sqlflite-adbc-dialect
bashdocker stop sqlflite
下载最新版本的sqlflite_server CLI可执行文件:
运行命令:
bashSQLFLITE_PASSWORD="sqlflite_password" sqlflite_server --database-filename data/some_db.duckdb --print-queries
查看所有选项:
bashsqlflite_server --help
bashgit clone https://github.com/voltrondata/sqlflite --recurse-submodules cd sqlflite # 构建并安装静态库和可执行文件 cmake -S . -B build -G Ninja -DCMAKE_INSTALL_PREFIX=/usr/local cmake --build build --target install
bashpython3 -m venv .venv . .venv/bin/activate pip install --upgrade pip setuptools wheel pip install --requirement ./requirements.txt
bashwget https://github.com/lovasoa/TPCH-sqlite/releases/download/v1.0/TPC-H-small.db -O ./data/TPC-H-small.sqlite
bashpython "scripts/create_duckdb_database_file.py" \ --file-name="TPC-H-small.duckdb" \ --file-path="data" \ --overwrite-file=true \ --scale-factor=0.01
bashpushd tls ./gen-certs.sh popd
bashSQLFLITE_PASSWORD="sqlflite_password" sqlflite_server --database-filename data/TPC-H-small.duckdb --print-queries
默认使用DuckDB后端,可通过--backend或-B参数切换:
bashSQLFLITE_PASSWORD="sqlflite_password" sqlflite_server --database-filename data/TPC-H-small.duckdb
或
bashSQLFLITE_PASSWORD="sqlflite_password" sqlflite_server -B duckdb -D data/TPC-H-small.duckdb
bashSQLFLITE_PASSWORD="sqlflite_password" sqlflite_server -B sqlite -D data/TPC-H-small.sqlite
或
bashSQLFLITE_PASSWORD="sqlflite_password" sqlflite_server --backend sqlite --database-filename data/TPC-H-small.sqlite
运行sqlflite_server --help查看所有可用选项:
bashsqlflite_server --help Allowed options: --help 显示帮助信息 --version 打印版本信息并退出 -B [ --backend ] arg (=duckdb) 指定数据库后端,允许选项:duckdb, sqlite -H [ --hostname ] arg 指定服务器监听主机名,未设置则使用环境变量SQLFLITE_HOSTNAME,默认0.0.0.0 -R [ --port ] arg (=31337) 指定服务器监听端口 -D [ --database-filename ] arg 指定数据库文件路径(绝对路径或相对当前工作目录) -U [ --username ] arg 指定允许连接的用户名,未设置则使用环境变量SQLFLITE_USERNAME,默认sqlflite_username -P [ --password ] arg 指定连接密码,未设置则使用环境变量SQLFLITE_PASSWORD,未设置时服务器将启动失败 -S [ --secret-key ] arg 指定用于签名JWT的密钥,未设置则使用环境变量SECRET_KEY,未设置时生成随机密钥 -T [ --tls ] arg 指定TLS证书和密钥文件路径 -I [ --init-sql-commands ] arg 指定启动时执行的SQL命令,未设置则使用环境变量INIT_SQL_COMMANDS -F [ --init-sql-commands-file ] arg 指定包含启动SQL命令的文件路径,未设置则使用环境变量INIT_SQL_COMMANDS_FILE -M [ --mtls-ca-cert-filename ] arg 指定用于验证客户端的mTLS CA证书路径(PEM格式) -Q [ --print-queries ] 将客户端执行的查询打印到标准输出
提供不包含Python、TLS证书生成和示例数据库的精简镜像。必须提供以下环境变量:
DATABASE_FILENAME - 数据库文件路径SQLFLITE_PASSWORD - 服务器密码可选环境变量:
TLS_ENABLED - 设置为"1"启用TLS(默认"0"禁用)TLS_CERT - 启用TLS时,TLS证书文件路径(需挂载到容器)TLS_KEY - 启用TLS时,TLS密钥文件路径(需挂载到容器)运行命令:
bashdocker run --name sqlflite-slim \ --detach \ --rm \ --tty \ --init \ --publish 31337:31337 \ --env DATABASE_FILENAME="data/some_database.duckdb" \ --env TLS_ENABLED="0" \ --env SQLFLITE_PASSWORD="sqlflite_password" \ --env PRINT_QUERIES="1" \ --pull missing \ voltrondata/sqlflite:latest-slim
详见容器入口脚本start_sqlflite_slim.sh。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务