" Docker 的理由是什么:守护程序的错误响应:未指定命令,"?

aiqt4smr  于 2023-02-07  发布在  Docker
关注(0)|答案(2)|浏览(168)

从我昨天的最后一次提交开始,我遇到了一个奇怪的问题,GitLab CI连续失败,错误如下所示:

$ ssh -i $SSH_PRIVATE_KEY -o StrictHostKeyChecking=no $SERVER_USER@$SERVER_IP "docker run -d -p 8010:80 --name my_project $TAG_LATEST"
docker: Error response from daemon: No command specified.
See 'docker run --help'.
Cleaning up project directory and file based variables
ERROR: Job failed: exit code 125

这是一个应构建并部署到我的服务器的React应用程序。
这是我的Dockerfile

FROM node:16.14.0-alpine as build

WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build

FROM nginx:1.19-alpine

COPY --from=build /app/build /usr/share/nginx/html
RUN rm /etc/nginx/conf.d/default.conf
COPY nginx/nginx.conf /etc/nginx/conf.d
EXPOSE 80

CMD ["nginx", "-g", "daemon off;"]

.gitlab-ci.yml文件中,我有2个阶段builddeploy。为了更清楚,我想分享它:

stages:
  - build
  - deploy

variables:
  TAG_LATEST: $CI_REGISTRY_IMAGE/$CI_COMMIT_REF_NAME:latest
  DOCKER_DRIVER: overlay2
  DOCKER_TLS_CERTDIR: "/certs"

build_test:
  image: docker:latest
  stage: build
  services:
    - docker:19.03.0-dind
  script:
    - docker build -t $TAG_LATEST .
    - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY
    - docker push $TAG_LATEST
  environment:
    name: test
  rules:
    - if: $CI_COMMIT_BRANCH == "develop"
      when: on_success

deploy_test:
  image: alpine:latest
  stage: deploy
  only:
    - develop
  tags:
    - frontend
  script:
    - chmod og= $SSH_PRIVATE_KEY
    - apk update && apk add openssh-client
    - ssh -i $SSH_PRIVATE_KEY -o StrictHostKeyChecking=no $SERVER_USER@$SERVER_IP "docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY"
    - ssh -i $SSH_PRIVATE_KEY -o StrictHostKeyChecking=no $SERVER_USER@$SERVER_IP "docker pull $TAG_LATEST"
    - ssh -i $SSH_PRIVATE_KEY -o StrictHostKeyChecking=no $SERVER_USER@$SERVER_IP "docker container rm -f my_project || true"
    - ssh -i $SSH_PRIVATE_KEY -o StrictHostKeyChecking=no $SERVER_USER@$SERVER_IP "docker run -d -p 8010:80 --name my_project $TAG_LATEST"
  environment:
    name: test

我执行了以下步骤:
1st尝试在我的服务器中手动使用docker run命令运行映像,结果是一样的!
第二,我把项目从gitlab拉到一个全新的文件夹中,然后运行第一个docker build -my_project .命令,就像我在服务器上做的那样。
我用ChatGPT重新验证了我的代码库,它没有发现错误。

j2datikz

j2datikz1#

目前,最新的Docker版本存在问题。
use:

image: docker:20.10.22

而不是:

image: docker:latest

有关详细信息,请查看此链接:www.example.comhttps://gitlab.com/gitlab-org/gitlab-runner/-/issues/29593#note_1263383415

bmp9r5qi

bmp9r5qi2#

3天以来我一直收到同样的错误。我也使用gitlab CI。
我通过在我的docker-compose.yml文件中添加这一行来解决这个问题(在涉及的服务部分)

command: ["nginx", "-g", "daemon off;"]

我还没有找到问题的根本原因。
希望能有所帮助。

相关问题