构建自定义Google Cloud Workstation镜像时遇apt-get包定位失败问题
问题:构建Google Cloud工作站镜像时出现apt-get包定位错误
我正尝试按照相关步骤,构建并推送修改后的Google Cloud工作站镜像到容器注册表。我使用的Dockerfile内容如下:
FROM us-central1-docker.pkg.dev/cloud-workstations-images/predefined/code-oss:latest RUN \ sudo apt-get update && \ sudo apt-get install -y apache2 \ sudo apt-get install -y libbz2-dev \ sudo apt-get install -y php && \ sudo apt-get install php-mysqli
执行docker build -t my-custom-image .命令构建镜像时,出现以下错误:
E: Unable to locate package apt-get E: Unable to locate package install E: Unable to locate package apt-get E: Unable to locate package install The command '/bin/sh -c sudo apt-get update && sudo apt-get install -y apache2 sudo apt-get install -y libbz2-dev sudo apt-get install -y php && sudo apt-get install php-mysqli' returned a non-zero code: 100
错误原因
你的Dockerfile里的RUN指令存在语法错误:在apache2这一行末尾没有添加&&来分隔后续命令,导致Docker把下一行的sudo apt-get install当成了apt-get install apache2的参数,系统误以为你要安装名为apt-get、install的包,所以报出"无法定位包"的错误。
另外,这个基础镜像的默认用户已是root,不需要加sudo,直接执行apt-get命令即可。
修正后的Dockerfile
FROM us-central1-docker.pkg.dev/cloud-workstations-images/predefined/code-oss:latest RUN apt-get update \ && apt-get install -y apache2 libbz2-dev php php-mysqli \ && apt-get clean \ && rm -rf /var/lib/apt/lists/*
优化说明:
- 把多个
apt-get install合并成一条命令,减少镜像层数量,提升构建效率 - 加入
apt-get clean和清理apt缓存目录的命令,大幅减小最终镜像体积
内容的提问来源于stack exchange,提问作者DanielAttard
相关产品推荐
相关产品推荐

