Dockerfile安装AlloyDB Omni CLI遇架构不匹配问题及Docker-in-Docker配置异常求助
我最近尝试按照Google官方文档,用Dockerfile在本地搭建AlloyDB Omni,但过程中遇到了两个棘手的问题,想请教大家有没有解决思路。
一、架构不匹配导致AlloyDB CLI安装失败
我一开始使用的Dockerfile配置如下:
FROM ubuntu:latest # Install necessary packages and dependencies RUN apt-get update && apt-get install -y \ software-properties-common \ sudo \ curl \ gnupg \ && rm -rf /var/lib/apt/lists/* # Add AlloyDB repository RUN curl https://europe-apt.pkg.dev/doc/repo-signing-key.gpg | sudo apt-key add - RUN echo "deb [arch=amd64] https://europe-apt.pkg.dev/projects/alloydb-omni alloydb-omni-apt main" | sudo tee -a /etc/apt/sources.list.d/artifact-registry.list # Update repositories and install alloydb-cli RUN apt-get update && apt-get install -y alloydb-cli
执行Docker构建时直接报错:Unable to locate package alloydb-cli。查看日志后发现问题根源:我使用的是ARM架构机器,但AlloyDB Omni CLI仅支持AMD64架构,日志提示:
Skipping acquire of configured file 'main/binary-arm64/Packages' as repository 'https://europe-apt.pkg.dev/projects/alloydb-omni alloydb-omni-apt InRelease' doesn't support architecture 'arm64'
临时解决方法
后来我通过指定构建平台解决了CLI安装失败的问题,使用的构建命令为:
docker build --platform linux/amd64 -t alloydb-docker-in-docker .
二、Docker-in-Docker配置后AlloyDB检测不到Docker
由于AlloyDB Omni运行依赖Docker,我在Dockerfile中添加了Docker-in-Docker的相关配置:
# 新增Docker-in-Docker配置 RUN add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu zesty stable" RUN curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - RUN apt-get update && sudo apt-get -y install docker-ce
接着用特权模式启动容器:
docker run --privileged -it --name alloydb-dind alloydb-docker-in-docker /bin/bash
进入容器后,Docker本身是正常可用的——我能执行docker ps查看容器状态,也能成功运行hello-world测试容器,但执行alloydb system-check时,却始终提示docker not available,不清楚AlloyDB是通过什么逻辑检测Docker安装状态的。
最终决定
折腾了一圈后,我暂时放弃了这个本地搭建方案。毕竟Docker-in-Docker本身就存在不少复杂度,再加上这种非官方的hack式配置稳定性难以保障,还是等官方推出正式的AlloyDB Omni Docker镜像后再尝试吧。
备注:内容来源于stack exchange,提问作者Luka Špoljarić

