Sending build context to Docker daemon 2.56kB Error response from daemon: dockerfile parse error l

本文解决了一个关于Dockerfile的第一行指令问题,遇到未知指令M的错误反馈,正确的应该是使用FROM指令来指定基础镜像。
Sending build context to Docker daemon   2.56kB
Error response from daemon: dockerfile parse error line 1: unknown instruction: M

dockerfile第一行有问题,看下是不是只复制到了m   应该是from

Started by user admin Obtained Jenkinsfile from git https://gitee.com/huyongcaiii/jenkins-demo.git [Pipeline] Start of Pipeline [Pipeline] node Running on Jenkins in /var/jenkins_home/workspace/jenkins [Pipeline] { [Pipeline] stage [Pipeline] { (Declarative: Checkout SCM) [Pipeline] checkout Selected Git installation does not exist. Using Default The recommended git tool is: NONE No credentials specified > git rev-parse --resolve-git-dir /var/jenkins_home/workspace/jenkins/.git # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url https://gitee.com/huyongcaiii/jenkins-demo.git # timeout=10 Fetching upstream changes from https://gitee.com/huyongcaiii/jenkins-demo.git > git --version # timeout=10 > git --version # 'git version 2.47.3' > git fetch --tags --force --progress -- https://gitee.com/huyongcaiii/jenkins-demo.git +refs/heads/*:refs/remotes/origin/* # timeout=10 > git rev-parse refs/remotes/origin/master^{commit} # timeout=10 Checking out Revision b0ae350a40520e4840332757d690e685cd882fe4 (refs/remotes/origin/master) > git config core.sparsecheckout # timeout=10 > git checkout -f b0ae350a40520e4840332757d690e685cd882fe4 # timeout=10 Commit message: "超时处理" > git rev-list --no-walk b0ae350a40520e4840332757d690e685cd882fe4 # timeout=10 [Pipeline] } [Pipeline] // stage [Pipeline] withEnv [Pipeline] { [Pipeline] withEnv [Pipeline] { [Pipeline] stage [Pipeline] { (Checkout) [Pipeline] echo 从Gitee拉取代码... [Pipeline] checkout Selected Git installation does not exist. Using Default The recommended git tool is: NONE No credentials specified > git rev-parse --resolve-git-dir /var/jenkins_home/workspace/jenkins/.git # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url https://gitee.com/huyongcaiii/jenkins-demo.git # timeout=10 Fetching upstream changes from https://gitee.com/huyongcaiii/jenkins-demo.git > git --version # timeout=10 > git --version # 'git version 2.47.3' > git fetch --tags --force --progress -- https://gitee.com/huyongcaiii/jenkins-demo.git +refs/heads/*:refs/remotes/origin/* # timeout=10 > git rev-parse refs/remotes/origin/master^{commit} # timeout=10 Checking out Revision b0ae350a40520e4840332757d690e685cd882fe4 (refs/remotes/origin/master) > git config core.sparsecheckout # timeout=10 > git checkout -f b0ae350a40520e4840332757d690e685cd882fe4 # timeout=10 Commit message: "超时处理" [Pipeline] } [Pipeline] // stage [Pipeline] stage [Pipeline] { (Build) [Pipeline] echo 构建Spring Boot应用... [Pipeline] sh + chmod +x ./mvnw + chmod +x ./mvnw.cmd + ./mvnw clean package -DskipTests -Dmaven.test.skip=true [INFO] Scanning for projects... [INFO] [INFO] -----------------------< org.example:jenkinsss >------------------------ [INFO] Building jenkinsss 0.0.1-SNAPSHOT [INFO] from pom.xml [INFO] --------------------------------[ jar ]--------------------------------- [INFO] [INFO] --- clean:3.4.1:clean (default-clean) @ jenkinsss --- [INFO] Deleting /var/jenkins_home/workspace/jenkins/target [INFO] [INFO] --- resources:3.3.1:resources (default-resources) @ jenkinsss --- [INFO] Copying 1 resource from src/main/resources to target/classes [INFO] Copying 0 resource from src/main/resources to target/classes [INFO] [INFO] --- compiler:3.14.0:compile (default-compile) @ jenkinsss --- [INFO] Recompiling the module because of changed source code. [INFO] Compiling 2 source files with javac [debug parameters release 17] to target/classes [INFO] [INFO] --- resources:3.3.1:testResources (default-testResources) @ jenkinsss --- [INFO] Not copying test resources [INFO] [INFO] --- compiler:3.14.0:testCompile (default-testCompile) @ jenkinsss --- [INFO] Not compiling test sources [INFO] [INFO] --- surefire:3.5.4:test (default-test) @ jenkinsss --- [INFO] Tests are skipped. [INFO] [INFO] --- jar:3.4.2:jar (default-jar) @ jenkinsss --- [INFO] Building jar: /var/jenkins_home/workspace/jenkins/target/jenkinsss-0.0.1-SNAPSHOT.jar [INFO] [INFO] --- spring-boot:3.5.6:repackage (repackage) @ jenkinsss --- [INFO] Replacing main artifact /var/jenkins_home/workspace/jenkins/target/jenkinsss-0.0.1-SNAPSHOT.jar with repackaged archive, adding nested dependencies in BOOT-INF/. [INFO] The original artifact has been renamed to /var/jenkins_home/workspace/jenkins/target/jenkinsss-0.0.1-SNAPSHOT.jar.original [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 18.436 s [INFO] Finished at: 2025-10-14T08:46:28Z [INFO] ------------------------------------------------------------------------ + ls -la target/jenkinsss-0.0.1-SNAPSHOT.jar -rw-r--r-- 1 jenkins 987 20996192 Oct 14 16:46 target/jenkinsss-0.0.1-SNAPSHOT.jar [Pipeline] } [Pipeline] // stage [Pipeline] stage [Pipeline] { (Docker Build) [Pipeline] echo 构建Docker镜像... [Pipeline] sh + docker --version + echo Docker可用,开始构建镜像 Docker可用,开始构建镜像 + echo 尝试构建Docker镜像... 尝试构建Docker镜像... + timeout 300 docker build --network=host -t jenkins-demo:15 . DEPRECATED: The legacy builder is deprecated and will be removed in a future release. Install the buildx component to build images with BuildKit: https://docs.docker.com/go/buildx/ Sending build context to Docker daemon 38.4kB Step 1/20 : FROM openjdk:21.0.8-jdk-slim AS builder Get "https://registry-1.docker.io/v2/": context deadline exceeded + echo Docker镜像构建失败(网络超时),将使用直接部署方式 Docker镜像构建失败(网络超时),将使用直接部署方式 + echo USE_DIRECT_DEPLOY=true [Pipeline] } [Pipeline] // stage [Pipeline] stage [Pipeline] { (Stop Previous Container) [Pipeline] echo 停止之前的容器... [Pipeline] sh + docker --version + echo Docker可用,停止旧容器 Docker可用,停止旧容器 + docker stop jenkins-demo-app Error response from daemon: No such container: jenkins-demo-app + true + docker rm jenkins-demo-app Error response from daemon: No such container: jenkins-demo-app + true + echo 旧容器已清理 旧容器已清理 [Pipeline] } [Pipeline] // stage [Pipeline] stage [Pipeline] { (Deploy Application) [Pipeline] echo 部署应用... [Pipeline] sh + [ -f /tmp/deploy_mode ] + grep -q USE_DIRECT_DEPLOY=true /tmp/deploy_mode + echo 使用直接部署方式(Docker构建失败)... 使用直接部署方式(Docker构建失败)... + USE_DIRECT_DEPLOY=true + [ true = true ] + echo === 直接部署模式 === === 直接部署模式 === + DEPLOY_DIR=/var/jenkins_home/apps/jenkins-demo + mkdir -p /var/jenkins_home/apps/jenkins-demo + cp target/jenkinsss-0.0.1-SNAPSHOT.jar /var/jenkins_home/apps/jenkins-demo/ + cd /var/jenkins_home/apps/jenkins-demo + export JAVA_OPTS=-Xmx512m -Xms256m -Dserver.port=8989 -Dserver.address=0.0.0.0 + echo 启动应用... 启动应用... + echo 592 + nohup java -Xmx512m -Xms256m -Dserver.port=8989 -Dserver.address=0.0.0.0 -jar jenkinsss-0.0.1-SNAPSHOT.jar + echo 直接部署完成 直接部署完成 + echo 部署目录: /var/jenkins_home/apps/jenkins-demo 部署目录: /var/jenkins_home/apps/jenkins-demo + cat /tmp/jenkins-demo.pid + echo 进程ID: 592 进程ID: 592 + echo 日志文件: /var/jenkins_home/apps/jenkins-demo/app.log 日志文件: /var/jenkins_home/apps/jenkins-demo/app.log [Pipeline] } [Pipeline] // stage [Pipeline] stage [Pipeline] { (Health Check) [Pipeline] echo 健康检查... [Pipeline] sh + echo 等待应用启动... 等待应用启动... + sleep 15 + docker --version + echo === Docker容器健康检查 === === Docker容器健康检查 === + docker ps + grep jenkins-demo-app + echo 容器未运行 容器未运行 + echo === 容器启动日志 === === 容器启动日志 === + docker logs --tail 20 jenkins-demo-app Error response from daemon: No such container: jenkins-demo-app + echo 无法获取容器日志 无法获取容器日志 + echo === 端口检查 === === 端口检查 === + docker port jenkins-demo-app Error response from daemon: No such container: jenkins-demo-app + echo 端口映射检查失败 端口映射检查失败 + echo === 健康检查 === === 健康检查 === + docker exec jenkins-demo-app curl -f http://localhost:8989/actuator/health + echo ⚠️ 应用健康检查失败,但容器仍在运行 ⚠️ 应用健康检查失败,但容器仍在运行 + echo === 外部访问测试 === === 外部访问测试 === + curl -f http://localhost:8989/hello + echo ⚠️ 外部访问失败 ⚠️ 外部访问失败 + echo 可能的原因: 可能的原因: + echo 1. 应用未正确绑定到0.0.0.0 1. 应用未正确绑定到0.0.0.0 + echo 2. 容器网络配置问题 2. 容器网络配置问题 + echo 3. 防火墙阻止连接 3. 防火墙阻止连接 [Pipeline] } [Pipeline] // stage [Pipeline] stage [Pipeline] { (Declarative: Post Actions) [Pipeline] echo 构建完成 [Pipeline] archiveArtifacts Archiving artifacts Recording fingerprints [Pipeline] echo 构建和部署成功! [Pipeline] echo 应用访问地址: http://localhost:8989 [Pipeline] echo 健康检查地址: http://localhost:8989/actuator/health [Pipeline] echo Hello接口: http://localhost:8989/hello [Pipeline] echo 部署目录: /opt/cefoc_env_dev/apps/jenkins-demo [Pipeline] echo 容器名称: jenkins-demo-app [Pipeline] echo [Pipeline] echo 管理命令: [Pipeline] echo 查看日志: docker logs -f jenkins-demo-app [Pipeline] echo 停止服务: docker-compose -f /opt/cefoc_env_dev/apps/jenkins-demo/docker-compose.yml down [Pipeline] echo 重启服务: docker-compose -f /opt/cefoc_env_dev/apps/jenkins-demo/docker-compose.yml restart [Pipeline] } [Pipeline] // stage [Pipeline] } [Pipeline] // withEnv [Pipeline] } [Pipeline] // withEnv [Pipeline] } [Pipeline] // node [Pipeline] End of Pipeline Finished: SUCCESS (这是我在jenkins流水线上部署我自己的代码后给出的信息)
最新发布
10-15
<think>好的,我现在需要解决用户提到的Docker构建时出现的“Unknown instruction: M”错误。首先,用户提供的引用中有一些关于Dockerfile的信息,比如引用[3]提到Dockerfile的格式是#注释后跟指令和参数,引用[4]建议查看官网文档。 首先,这个错误通常意味着Docker在解析Dockerfile时遇到了无法识别的指令。根据经验,可能的情况是用户不小心在指令行前加了其他字符,或者指令拼写错误。比如,可能将“MAINTAINER”写成了“M”开头,或者误输入了其他字母。 然后,检查用户提供的引用中的例子,比如引用[5]中的Dockerfile步骤,使用的是正确的指令如FROM和COPY。这说明用户可能在某些步骤中写错了指令。例如,可能把“MAINTAINER”简写成“M”,而Docker没有这个指令,所以报错。 接下来,根据引用[3]的格式,正确的指令应该是全大写的,如FROM、RUN等。如果用户不小心在指令前加了空格或者其他字符,或者指令拼写错误,比如把“MAINTAINER”写成“M”,就会导致这个错误。 另外,用户可能在Windows系统下编辑Dockerfile,需要注意文件的编码格式是否为UTF-8,并且换行符是否为LF而非CRLF,否则可能导致解析问题。但根据错误信息中的“Unknown instruction: M”,更可能是直接指令错误。 解决方案应该是检查Dockerfile中的每一行指令,确保每个指令都是有效的,并且没有拼写错误。特别是检查是否有类似“M ...”这样的行,将其更正为正确的指令,如“MAINTAINER”或使用LABEL代替,因为MAINTAINER已过时。 最后,建议用户参考官方文档(引用[4]提供的链接)确认指令的正确写法,并检查文件格式是否正确,避免其他隐藏字符的影响。</think>### Docker构建错误"Unknown instruction: M"解决方案 出现`Unknown instruction: M`错误时,通常由以下原因导致: 1. **指令拼写错误**: - Dockerfile指令必须全大写且无拼写错误 - 常见误写情况:将`MAINTAINER`写成`MAINTAIN`,或`MAINTAINER`指令被错误缩写为`M` - 示例错误写法: ```dockerfile M John Doe <john@example.com> # 错误指令 ``` 2. **无效指令位置**: - 所有有效指令必须顶格写在行首 - 错误示例: ```dockerfile MAINTAINER John Doe # 前有空格 ``` 3. **文件编码问题**: - 使用Windows记事本编辑时可能产生BOM头 - 推荐使用VS Code等专业编辑器,保存为UTF-8无BOM格式[^4] **正确修复步骤**: ```dockerfile # 使用标准MAINTAINER指令(已废弃但有效) MAINTAINER John Doe <john@example.com> # 推荐使用LABEL替代(新标准写法) LABEL maintainer="John Doe <john@example.com>" ``` **完整Dockerfile示例**: ```dockerfile FROM alpine:3.15 LABEL maintainer="Dev Team <dev@example.com>" RUN apk add --no-cache python3 COPY app.py /app/ CMD ["python3", "/app/app.py"] ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值