天行健,君子以自强不息;地势坤,君子以厚德载物。
每个人都有惰性,但不断学习是好好生活的根本,共勉!
文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。
文章目录
- 1. 场景
- 2. 报错
- 3. 分析
- 4. 解决
1. 场景
在使用gitlab cicd时,在构建镜像阶段docker命令报错
.gitlab-ci.yml文件中构建镜像阶段的内容如下
#任务部分,根据定义的stage顺序来执行任务
#构建镜像
job2-build:#任务阶段stage: build#任务引用的镜像,构建镜像时会使用Dockerfile文件中的内容,包含镜像配置,故该job中无需镜像配置#任务执行选用的runner的标签,定义后会根据标签选用对应的runner执行任务tags:- runner-01#局部前置脚本命令,仅作用于此任务部分before_script:- echo "开始构建镜像--->"#执行脚本,列举jar包文件夹,构建镜像,打标签,推送镜像,删除镜像script:#提示信息打印- echo '打标签---推送镜像---删除镜像'- ls#这里可以直接构建镜像,省略前面的步骤- docker build -t $PROJECT_IMAGE_NAME:$PROJECT_IMAGE_TAG $IMAGE_HARBOR_REPOSITORY/$PROJECT_IMAGE_NAME:$PROJECT_IMAGE_TAG#将镜像推送到到harbor仓库- docker push ${IMAGE_HARBOR_REPOSITORY}/$PROJECT_IMAGE_NAME:$PROJECT_IMAGE_TAG#查看镜像是否生成- docker images | $PROJECT_IMAGE_TAG#删除jar包- rm -rf app.jar#检查是否被删除- ls#删除打标签后用于推送到harbor仓库的的镜像- docker rmi -f $IMAGE_HARBOR_REPOSITORY/$PROJECT_IMAGE_NAME:$PROJECT_IMAGE_TAG#查看镜像是否被删除- docker images | $PROJECT_IMAGE_TAG
2. 报错
报错如下
/usr/bin/bash: line 136: docker:command not found
截图
3. 分析
该报错表示无法使用docker命令,没有找到对应的docker配置
所以应该是环境中没有docker,需要指定镜像,且镜像必须包含docker
4. 解决
添加参数指定镜像,且镜像为docker(或者包含docker的镜像),然后指定services,也是docker
#任务部分,根据定义的stage顺序来执行任务
#构建镜像
job2-build:#任务阶段stage: build#任务引用的镜像,构建镜像时会使用Dockerfile文件中的内容,包含镜像配置,故该job中无需镜像配置image: docker:latestservices:- docker:dind#任务执行选用的runner的标签,定义后会根据标签选用对应的runner执行任务tags:- runner-01#局部前置脚本命令,仅作用于此任务部分before_script:- echo "开始构建镜像--->"#执行脚本,列举jar包文件夹,构建镜像,打标签,推送镜像,删除镜像script:#提示信息打印- echo '打标签---推送镜像---删除镜像'- ls#这里可以直接构建镜像,省略前面的步骤- docker build -t $PROJECT_IMAGE_NAME:$PROJECT_IMAGE_TAG $IMAGE_HARBOR_REPOSITORY/$PROJECT_IMAGE_NAME:$PROJECT_IMAGE_TAG#将镜像推送到到harbor仓库- docker push ${IMAGE_HARBOR_REPOSITORY}/$PROJECT_IMAGE_NAME:$PROJECT_IMAGE_TAG#查看镜像是否生成- docker images | $PROJECT_IMAGE_TAG#删除jar包- rm -rf app.jar#检查是否被删除- ls#删除打标签后用于推送到harbor仓库的的镜像- docker rmi -f $IMAGE_HARBOR_REPOSITORY/$PROJECT_IMAGE_NAME:$PROJECT_IMAGE_TAG#查看镜像是否被删除- docker images | $PROJECT_IMAGE_TAG
再出提交更新代码即可
感谢阅读,祝君暴富!