Docker 未运行...失败

标签 docker service dockerfile

我正在运行以下命令:

docker run --name myjenkins -u root -d -p 8080:8080 -p 50000:50000 -v jenkins-data:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock --privileged vaish

docker exec -it myjenkins vaish

service docker start

service docker status

输出为 [FAIL] Docker 未运行...失败!

注意:我已经通过 dockerfile 安装了 docker 注意:我的应用是一组docker容器

当我检查主机上的服务 docker 状态时,它处于事件状态(正在运行),但问题出在容器内部!

docker 文件:

FROM jenkins/jenkins:lts
ENV JENKINS_SLAVE_AGENT_PORT '50000'
USER $USER
WORKDIR /var/jenkins_home/workspace/pipelineDemo@script
ARG NODE_ENV
ENV NODE_ENV=$NODE_ENV
RUN apt-get update
RUN curl -sL https://deb.nodesource.com/setup_9.x | bash -
RUN apt-get install -y nodejs
RUN apt-get update
RUN apt-get install -y npm
RUN npm install -g npm
RUN apt-get install python3
RUN apt-get install --reinstall make
RUN npm install --global gulp-cli
RUN npm install --global gulp
RUN apt-get -y install g++

RUN apt-get update
RUN apt-get install
RUN apt-get -y install apt-transport-https \
    ca-certificates \
     curl \
     gnupg2 \
     software-properties-common
RUN curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
RUN apt-key fingerprint 0EBFCD88
RUN add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian \
   $(lsb_release -cs) \
   stable"
RUN apt-get update
RUN apt-get install -y docker-ce

RUN curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
RUN chmod +x /usr/local/bin/docker-compose

RUN usermod -aG docker jenkins

USER jenkins
COPY Jenkinsfile /var/jenkins_home/workspace/pipelineDemo@script
CMD [ "npm", "start" ]

当我的 jenkins docker 容器中没有 docker 并且我运行 npm run install 时,我得到以下日志:为了避免这些错误,我必须在我的 jenkins docker 容器中安装 docker 和 docker compose

> /var/jenkins_home/workspace/pipelineDemo@script
> node tasks/down.js

✖ Command failed: docker-compose kill
/bin/sh: 1: docker-compose: not found


>/var/jenkins_home/workspace/pipelineDemo@script
> node tasks/build.js

 ✔ bundle admin
 ✔ bundle front-end
 ✖ build admin
   → /bin/sh: 1: docker: not found
 ✖ build bank-accounts
   → /bin/sh: 1: docker: not found

注意:在我的主机上,docker 安装了 npm i 和 npm run install 命令

最佳答案

我遇到了同样的问题。我找到了解决方案 here :

当您启动 Jenkins 容器时,使用 -v 将主机的 docker.sock 交给容器:

docker run -v /var/run/docker.sock:/var/run/docker.sock ...

当 Jenkins 由用户 jenkins 运行时,您运行 root 也可能是一个问题。不过,我预计会出现不同的错误。

这是我的 Jenkinsfile(我没有安装 docker-compose)

FROM jenkins/jenkins

USER root

RUN apt update && apt install -y apt-transport-https ca-certificates curl gnupg2 software-properties-common
RUN curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
RUN apt-key fingerprint 0EBFCD88
RUN add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
RUN apt update && apt install -y docker-ce
RUN usermod -aG docker jenkins

USER jenkins

我用

启动容器
docker run --name mycustomjenkins \
  -p 8080:8080 -p 50000:50000 \
  -v jenkins_home:/var/jenkins_home \
  -v /var/run/docker.sock:/var/run/docker.sock <IMAGE-ID>

这样我就可以在我的 Jenkins 中使用 Docker 代理。

关于Docker 未运行...失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52402531/

相关文章:

bash - 如何在启动时动态地将docker容器ip设置为环境变量?

docker-compose 设置中已编译组件的 Docker 开发工作流程

android - android 上的后台进程计时器

mysql - Docker-compose 为 spring 服务和 mysql 服务工作,但 init.sql 没有加载并且 Postman 返回空数据

git - 如何在 Jenkins 的 HTTP_PROXY 后面使用 Dockerfile 构建 Docker 镜像?

node.js - 错误 : Cannot find "/config/config.json". 你运行 "sequelize init"了吗?

ubuntu - 安装特定版本的 docker

docker - 从本地(未发布)镜像构建 docker 镜像

linux - Docker 客户端卡住

android - Android Service在后台数据丢失时运行