gpt4 book ai didi

docker - 官方 Docker 镜像显示 docker 未运行?

转载 作者:行者123 更新时间:2023-12-02 09:02:39 26 4
gpt4 key购买 nike

我按以下顺序执行以下 docker 命令:

docker pull docker

docker run -ti <imgId>

https://hub.docker.com/_/docker/

现在我位于 Docker 的“docker”镜像内

现在假设我创建一个临时文件夹并下载 Dockerfile

mkdir temp

cd temp

curl <dockerfile>

docker build .

它会告诉我无法连接到位于 unix:///var/run/docker.sock 的 Docker 守护进程。 docker 守护进程是否正在运行?

这意味着需要启动docker服务,但是随着官方docker镜像出现在alpine linux上,像service/systemctl这样的命令> 不可用,因此我们必须执行 apk add openrc --no-cache 才能访问这些。

我安装后,还是无法启动docker服务。

执行system docker start提示找不到docker作为服务?

服务:docker服务不存在

最终我想通过 Jenkins 构建这个。

enter image description here

在构建步骤中,我执行执行Shell

if [ -f "Dockerfile" ]; then
echo "Dockerfile exists ... removing it"
rm Dockerfile
fi

wget <dockerFile url>


docker build .

我故意不在 Jenkins 上执行 openrc,因为我想先在本地进行测试

最佳答案

您在此处提取的镜像(带有 latest 标签)不包含 docker 守护程序。它旨在用作 docker 客户端。您想要的是首先让 docker 守护进程与标记为 dind(docker in docker)的镜像一起运行。

docker network create dind
docker run --privileged --name docker --network dind -v docker-client-certs:/certs/client -d docker:dind

要验证它是否已启动并正常工作,您可以检查日志。

docker logs docker

现在您可以使用客户端容器连接到守护程序。这就是您以交互方式连接到 shell 的方式,就像您想要的那样:

docker run -ti --network dind -e DOCKER_TLS_CERTDIR=/certs -v docker-client-certs:/certs/client:ro docker

Docker 命令应该在此容器内运行。如果您使用docker version,您应该会看到客户端和服务器的版本。

请注意,这两个容器共享相同的网络(一些示例在线功能链接,但这些已弃用)。他们还共享一些 TLS 证书,这些证书是在启动 dind 镜像时生成的。

关于docker - 官方 Docker 镜像显示 docker 未运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52045344/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com