Docker Podman 启动命令

data-collection-tdengine Docker 启动命令

系统环境

  • 操作系统: Kylin Linux Advanced Server V10 (Halberd)
  • 架构: ARM64 (aarch64)
  • 内核版本: 4.19.90-89.11.v2401.ky10.aarch64
  • Docker 版本: 29.5.3
  • runc 版本: 1.0.0-rc3
  • containerd runc 路径: /usr/local/sbin/runc
  • 离线镜像包: /root/tdengine-tsdb-oss-docker-3.4.1.6-linux-arm64.tar

方案1:使用 Podman(推荐)

Podman 在 Kylin V10 上兼容性更好,无需修改内核即可运行。

1. 安装 Podman

bash 复制代码
yum install -y podman

2. 导入离线镜像

bash 复制代码
# 导入镜像到 Podman
podman load -i /root/tdengine-tsdb-oss-docker-3.4.1.6-linux-arm64.tar

# 查看导入的镜像
podman images

3. 导出镜像

bash 复制代码
# 导出镜像到 tar 文件
podman save -o /root/tdengine-export.tar tdengine/tsdb-arm64:3.4.1.6

# 或者使用镜像 ID 导出
podman save -o /root/tdengine-export.tar <镜像ID>

# 验证导出文件
ls -lh /root/tdengine-export.tar

参数说明

  • -o--output: 指定输出文件路径
  • 最后参数: 镜像名称或 ID

4. 启动容器(单行命令)

⚠️ 注意:使用 --network host 模式,容器直接使用宿主机网络,无需创建网络。

bash 复制代码
podman run -d --name data-collection-tdengine --privileged --network host -v /root/data-collection/data-collection-tdengine/init.sql:/docker-entrypoint-initdb.d/init.sql:rw -v /root/data-collection/data-collection-tdengine/tdengine-data:/var/lib/taos:rw tdengine/tsdb-arm64:3.4.1.6

5. 启动容器(多行格式)

bash 复制代码
podman run -d \
  --name data-collection-tdengine \
  --privileged \
  --network host \
  -v /root/data-collection/data-collection-tdengine/init.sql:/docker-entrypoint-initdb.d/init.sql:rw \
  -v /root/data-collection/data-collection-tdengine/tdengine-data:/var/lib/taos:rw \
  tdengine/tsdb-arm64:3.4.1.6

6. 设置容器自动重启(systemd 管理)

Podman 不支持 --restart 参数,需要使用 systemd 管理自动重启:

bash 复制代码
# 生成 systemd 服务文件
podman generate systemd --name data-collection-tdengine --files --new

# 移动到 systemd 目录
mv container-data-collection-tdengine.service /etc/systemd/system/

# 启用并启动服务
systemctl enable --now container-data-collection-tdengine.service

# 验证服务状态
systemctl status container-data-collection-tdengine.service

7. 验证容器状态

bash 复制代码
# 查看容器状态
podman ps -a | grep tdengine

# 查看容器日志
podman logs data-collection-tdengine

# 进入容器
podman exec -it data-collection-tdengine bash

Podman 完整操作流程

bash 复制代码
# 步骤1: 安装 Podman
yum install -y podman

# 步骤2: 导入离线镜像
podman load -i /root/tdengine-tsdb-oss-docker-3.4.1.6-linux-arm64.tar

# 步骤3: 查看镜像名称
podman images

# 步骤4: 启动容器(使用 host 网络)
podman run -d \
  --name data-collection-tdengine \
  --privileged \
  --network host \
  -v /root/data-collection/data-collection-tdengine/init.sql:/docker-entrypoint-initdb.d/init.sql:rw \
  -v /root/data-collection/data-collection-tdengine/tdengine-data:/var/lib/taos:rw \
  tdengine/tsdb-arm64:3.4.1.6

# 步骤5: 验证容器状态
podman ps -a

Podman 常用命令对照

Docker 命令 Podman 命令
docker ps podman ps
docker ps -a podman ps -a
docker images podman images
docker load -i <tar> podman load -i <tar>
docker save -o <tar> <image> podman save -o <tar> <image>
docker logs <container> podman logs <container>
docker exec -it <container> bash podman exec -it <container> bash
docker stop <container> podman stop <container>
docker start <container> podman start <container>
docker rm <container> podman rm <container>
docker rmi <image> podman rmi <image>

方案2:使用 Docker(需要升级内核)

问题现象

启动容器时报错:

复制代码
docker: Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: namespace {"time" ""} does not exist: unknown

问题原因

根本原因: 内核 4.19 不支持 time namespace 特性。time namespace 是 Linux 5.6+ 内核才引入的功能。

Docker 导入离线镜像

bash 复制代码
# 导入镜像到 Docker
docker load -i /root/tdengine-tsdb-oss-docker-3.4.1.6-linux-arm64.tar

# 查看镜像
docker images

升级内核步骤

bash 复制代码
# 1. 查看可用内核版本
yum list kernel

# 2. 升级内核
yum update kernel -y

# 3. 重启系统
reboot

# 4. 重启后验证内核版本
uname -r

# 5. 重启 Docker 服务
systemctl restart docker

# 6. 启动容器
docker run -d \
  --name data-collection-tdengine \
  --privileged \
  --restart always \
  --network host \
  -v /root/data-collection/data-collection-tdengine/init.sql:/docker-entrypoint-initdb.d/init.sql:rw \
  -v /root/data-collection/data-collection-tdengine/tdengine-data:/var/lib/taos:rw \
  tdengine/tsdb-arm64:3.4.1.6

参数说明

网络模式说明

参数 说明
--network host 容器直接使用宿主机网络,无需端口映射
--network bridge 默认桥接模式,需要 -p 端口映射

⚠️ 使用 --network host 模式时,容器端口直接暴露在宿主机上,无需 -p 参数。

卷挂载说明

宿主机路径 容器路径 说明
/root/data-collection/data-collection-tdengine/init.sql /docker-entrypoint-initdb.d/init.sql 初始化 SQL 脚本
/root/data-collection/data-collection-tdengine/tdengine-data /var/lib/taos TDEngine 数据目录

系统信息检查

bash 复制代码
# 查看内核版本
uname -r

# 查看 Docker 版本
docker version

# 查看 runc 版本
runc --version

# 查看 containerd 使用的 runc 路径
/usr/local/sbin/runc --version

# 查看系统信息
cat /etc/os-release

# 查看 containerd 配置
cat /etc/containerd/config.toml

常见问题

问题1:Podman 网络命令不存在

错误信息

复制代码
Command "network" not found.
See 'podman --help'.

解决方案 :旧版 Podman 不支持 podman network 命令,使用 --network host 模式。

问题2:Podman 缺少 CNI 网络

错误信息

复制代码
error configuring network namespace for container: Missing CNI default network

解决方案 :使用 --network host 模式,绕过 CNI 网络配置。

问题3:Podman 不支持 --restart 参数

错误信息

复制代码
flag provided but not defined: -restart

解决方案 :移除 --restart 参数,使用 systemd 管理自动重启。

问题4:Docker time namespace 错误

错误信息

复制代码
namespace {"time" ""} does not exist: unknown

解决方案:使用 Podman 或升级内核到 5.6+。


注意事项

  • ❌ Docker 在内核 4.19 上无法运行此容器(time namespace 不支持)
  • ❌ Podman 不支持 --restart 参数,需使用 systemd 管理自动重启
  • ❌ 旧版 Podman 不支持 podman network 命令
  • ✅ 使用 --network host 模式,无需配置网络
  • ✅ 使用离线镜像包导入:podman load -i /root/tdengine-tsdb-oss-docker-3.4.1.6-linux-arm64.tar
  • ✅ 推荐使用 Podman 替代 Docker
  • ✅ 使用绝对路径 /root/data-collection/...
  • ✅ 镜像版本为 tdengine/tsdb-arm64:3.4.1.6

原始 docker-compose 配置

yaml 复制代码
data-collection-tdengine:
    image: tdengine/tsdb-amd64:3.4.0.2
    container_name: data-collection-tdengine
    ports:
      - "6030:6030"  # 核心服务端口,客户端连接使用
      - "6041:6041"  # RESTful API端口(重要!)
      - "6043:6043"  # 3.x版本Web管理界面端口
      - "6044:6044"  # 可选,WebSocket端口
      - "6045:6045"  # 集群间通信端口
      - "6046:6046"  # 集群间通信端口
    volumes:
      - ./data-collection-tdengine/init.sql:/docker-entrypoint-initdb.d/init.sql:rw
      - ./data-collection-tdengine/tdengine-data:/var/lib/taos:rw
    privileged: true
    restart: always
    tty: true
    networks:
      - data_collection_network
      - default
相关推荐
r-t-H1 小时前
Docker进阶与容器编排实践-第三章
运维·docker·容器
willhuo2 小时前
Docker 存储目录迁移:解决 No space left on device
docker·容器·eureka
Dontla2 小时前
WSL卡死解决办法(wsl2卡死、WSL死机、WSL无响应、WSL无法启动、Docker Desktop卡死)(重启后解决了)
docker
极客先躯2 小时前
高级java每日一道面试题-2026年02月07日-实战篇[Docker]-如何使用存储插件(如 NFS、Ceph)?
运维·分布式·容器·自动化·文件·插件·高可用
“码”力全开2 小时前
打通安防孤岛:基于 Docker 与 GB28181/RTSP 架构的 AI 视频管理平台,全源码交付解锁二次开发自主权
人工智能·docker·架构
杨了个杨89822 小时前
阿里云 ACR Docker 镜像分发
阿里云·docker·云计算
vistaup3 小时前
群晖 hermes docker 安装无法自动启动 gateway
docker·hermes
willhuo3 小时前
射击训练系统 Docker 部署方案(OpenCloudOS 9.4)
运维·docker·容器
“码”力全开4 小时前
解耦安防黑盒:基于 Docker 容器化与 GB28181/RTSP 双协议架构的 AI 边缘计算视频平台(全源码交付)
人工智能·docker·架构