Docker在Rancher环境下启动失败,请求协助排查并运行容器
在Rancher环境中Docker容器启动失败的解决办法
问题详情
执行以下Docker脚本时容器启动失败:
IMAGE_NAME="harbor.infra.yandex.astral-dev.ru/astral-edo/go/astral-ubuntu-builder:v4" docker pull $IMAGE_NAME docker volume create edi_operator_pkg docker run -it --rm \ -v $(pwd):/mnt \ -v edi_operator_pkg:/root/go/pkg \ $IMAGE_NAME
排查与修复步骤
1. 解决交互式终端兼容性问题
Rancher默认Shell环境常不支持-it交互式启动参数,先去掉该参数改用后台启动,通过日志定位具体报错:
# 后台启动容器 docker run -d --rm \ -v $(pwd):/mnt \ -v edi_operator_pkg:/root/go/pkg \ $IMAGE_NAME # 查看容器日志,替换<container-id>为实际容器ID docker logs <container-id>
若容器能后台启动,后续可通过Rancher界面的容器控制台进入容器操作,无需依赖-it参数。
2. 排查挂载目录权限问题
Rancher运行Docker的用户权限与本地环境存在差异,挂载当前目录到/mnt易出现权限拒绝:
- 先检查当前目录权限:
ls -ld $(pwd)
- 可通过指定root用户启动容器规避权限问题:
docker run -it --rm \ -v $(pwd):/mnt \ -v edi_operator_pkg:/root/go/pkg \ --user root \ $IMAGE_NAME
3. 验证自定义卷状态
检查edi_operator_pkg卷是否正常创建:
docker volume inspect edi_operator_pkg
若卷存在异常,删除后重建:
docker volume rm edi_operator_pkg docker volume create edi_operator_pkg
4. 确认镜像完整性与启动命令
- 重新拉取镜像,避免镜像损坏:
docker pull --no-cache $IMAGE_NAME
- 查看镜像默认启动命令,若无默认命令需手动指定(如
bash):
# 查看镜像默认启动命令 docker inspect --format='{{.Config.Cmd}}' $IMAGE_NAME # 若返回空,启动时添加bash命令 docker run -it --rm \ -v $(pwd):/mnt \ -v edi_operator_pkg:/root/go/pkg \ $IMAGE_NAME bash
5. 测试特权模式(谨慎使用)
若为Rancher环境权限限制导致,临时使用--privileged参数测试:
docker run -it --rm --privileged \ -v $(pwd):/mnt \ -v edi_operator_pkg:/root/go/pkg \ $IMAGE_NAME
内容的提问来源于stack exchange,提问作者Cockpiler
相关产品推荐
相关产品推荐

