【发布时间】:2018-08-27 18:48:52
【问题描述】:
我按以下顺序执行以下 docker 命令:
docker pull docker
docker run -ti <imgId>
https://hub.docker.com/_/docker/
现在我在 Docker 的“docker”镜像中
现在假设我创建一个临时文件夹并下载一个 Dockerfile
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服务,但是由于官方的docker镜像在alpine linux上,service/systemctl这样的命令不可用,所以我们必须执行apk add openrc --no-cache访问这些。
我安装后还是无法启动docker服务。
执行system docker start 表示找不到docker 作为服务?
service: service docker does not exist
最终我想通过 Jenkins 来构建它。
在构建步骤中,我执行Execute Shell
if [ -f "Dockerfile" ]; then
echo "Dockerfile exists ... removing it"
rm Dockerfile
fi
wget <dockerFile url>
docker build .
我故意不在 Jenkins 上执行 openrc,因为我想先在本地进行测试
【问题讨论】:
-
你的 Jenkins 在容器中吗?
-
是的,我的 Jenkins 从我们的代理中提取 docker 映像
-
@ps4,我添加了一张你喜欢的图片
-
大致来说,像
service和systemctl这样的命令在Docker 中根本不起作用。将 Docker 作为容器运行是一种特别高级的设置,通常不推荐;通常你会将 Jenkins 配置为使用主机的 Docker 套接字。 -
使用 Jenkins 使用 dockers 主机套接字需要在 Linux Slave 上安装 Jenkins 服务,这不是我们要采用的方法。我想知道我在这里做错了什么?官方镜像应该已经安装了docker
标签: docker jenkins dockerfile