Docker Podman 启动命令详解
系统环境
- 操作系统: 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
yum install -y podman
2. 导入离线镜像
# 导入镜像到 Podman podman load -i /root/tdengine-tsdb-oss-docker-3.4.1.6-linux-arm64.tar # 查看导入的镜像 podman images
3. 导出镜像
# 导出镜像到 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模式,容器直接使用宿主机网络,无需创建网络。
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 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 管理自动重启:
# 生成 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. 验证容器状态
# 查看容器状态 podman ps -a | grep tdengine # 查看容器日志 podman logs data-collection-tdengine # 进入容器 podman exec -it data-collection-tdengine bash
Podman 完整操作流程
# 步骤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 导入离线镜像
# 导入镜像到 Docker docker load -i /root/tdengine-tsdb-oss-docker-3.4.1.6-linux-arm64.tar # 查看镜像 docker images
升级内核步骤
# 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 数据目录 |
系统信息检查
# 查看内核版本 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 配置
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到此这篇关于Docker Podman 启动命令的文章就介绍到这了,更多相关Docker Podman命令内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
firewalld防火墙开启后无法启动docker问题及解决
文章描述了在Linux上开启或重启防火墙后,创建docker自定义网络时出现的错误,原因是firewalld和docker在操作iptables时发生了冲突,文章提供了两种解决办法:1. 重启Docker服务;2. 让Docker绕过firewalld2025-12-12
docker-compose 搭建redis集群(三台服务器,每台服务器上一主一从)
本文主要介绍了Docker Compose搭建Redis集群是一种便捷高效的方法,本次搭建使用三台服务器,每台服务器上一主一从,具有一定的参考价值,感兴趣的可以了解一下2025-03-03


最新评论