繁体   English   中英

如何在 Alpine 中使用 docker/gitlab ci 中的任何 docker 映像

[英]How to use docker inside Alpine/Any docker image in gitlab ci

我想使用位于其他私有存储库中的 dockerfile 构建和测试我的应用程序。 为此,我使用了 Alpine 官方 docker 映像,在其中运行 bash 脚本来克隆我的私人仓库并运行 docker 来构建 docker 映像。 这就是我的.gitlab-ci.yml样子。

    image: alpine:3.15
stages:
  - main

main-job:
  stage: main
  script:
    - apk add --update docker openrc
    - rc-update add docker boot
    - apk add bash git curl
    - bash build.sh $GH_TOKEN $REPO

我在build.sh中有简单的脚本

git clone https://${GH_TOKEN}@github.com/${REPO} source
cd source || exit 1
docker container prune --force || true
docker build . --rm --force-rm --compress --no-cache=true --pull --file Dockerfile -t test-app
docker image ls
docker run --privileged --rm -i test-app

但是 Docker 不启动并且垃圾邮件错误。

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?.
See 'docker run --help'.

还尝试在 ubuntu docker 中使用其他命令,例如service start docker docker 、 dockerdservice restart docker docker 等。 但似乎没有任何效果,因为我猜我们不能在 docker 内运行 docker 或其他东西。

我们可以有任何替代的想法吗?

我建议您构建并将构建的映像推送到 dockerhub。 然后,您可以启动引用预构建映像的容器。

看起来您没有运行 docker 代理。 您可以通过添加以下内容在 docker 服务中使用 docker:

services:
  - docker:dind

有关更多信息,请参阅有关构建 docker 映像的 GitLab-ci 文档: https ://docs.gitlab.com/ee/ci/docker/using_docker_build.html

我遇到了同样的问题。 可能你必须在你的主机上允许 gitlab-runner 。

sudo usermod -aG docker gitlab-runner

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM