官方Docker映像显示Docker没有运行?

时间:2018-08-27 18:48:53

标签: docker jenkins dockerfile

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

awk -F '=' '{print $1}' <<< 'abc=xyz'

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

现在我在Docker的“ docker”映像中

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

docker pull docker

docker run -ti <imgId>

它会告诉我mkdir temp cd temp curl <dockerfile> docker build .

这意味着需要启动Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?服务,但是由于官方docker映像位于 alpine linux 上,因此docker之类的命令不可用,因此我们必须执行service/systemctl来访问它们。

安装后,仍然无法启动docker服务。

执行apk add openrc --no-cache表示找不到system docker start作为服务吗?

docker

最终我想通过Jenkins构建它。

enter image description here

在构建步骤中,我执行service: service docker does not exist

Execute Shell

由于我要先在本地进行测试,因此我故意不对Jenkins进行if [ -f "Dockerfile" ]; then echo "Dockerfile exists ... removing it" rm Dockerfile fi wget <dockerFile url> docker build .

1 个答案:

答案 0 :(得分:0)

您要拖到此处的图像(带有latest标签)不包含docker守护进程。它打算用作docker客户端。您想要的是首先使docker守护进程运行带有标记为dind的映像(docker中的docker)。

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

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

docker logs docker

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

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

Docker命令应在此容器内工作。如果您执行docker version,则应该同时看到客户端和服务器的版本。

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