在ubuntu Docker容器中运行Docker ?



我试图在Ubuntu docker容器内运行docker,将其用作Jenkins的docker构建代理。

当我尝试运行docker build命令来创建docker映像时,我得到以下错误。

Jenkins出错

ERROR: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

Docker构建代理的Docker文件

FROM ubuntu:latest
RUN apt update
USER root
RUN apt install -y git
RUN apt-get install 
ca-certificates 
curl 
gnupg -y
RUN mkdir -m 0755 -p /etc/apt/keyrings
RUN curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
RUN echo 
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu 
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | 
tee /etc/apt/sources.list.d/docker.list > /dev/null
RUN apt-get update
RUN apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
RUN curl -fsSL https://deb.nodesource.com/setup_19.x | bash - &&
apt-get install -y nodejs

管道应该:

  1. 克隆存储库
  2. 构建react应用
  3. 构建Docker镜像并推送到Docker注册表。

如何让这个设置运行?或者有更好的方法来实现这一点吗?

我必须使用docker构建代理,因为所有必要的工具并不总是直接安装在主机上。

一种不那么复杂的方法是在你的普通代理上安装docker,然后在这台机器上使用docker引擎来构建你的docker镜像,让我展示一个类似的例子Jenkinsfile,其中使用了这种方法:"‘管道{代理任何环境{DOCKER_REG_CRED = credentials('Nexus-Creds')DOCKER_REG = "}阶段{

stage('Building Docker Image') {
agent {
node {
label 'jenkins-opensource-linux'
}
}
steps {
script {
try {
script {
sh 'docker build -t ${DOCKER_REG}/docker-release/reactapp:${buildName} .'
sh "docker login -u ${DOCKER_REG_CRED_USR} -p ${DOCKER_REG_CRED_PSW} ${DOCKER_REG}"
sh 'docker push ${DOCKER_REG}/docker-release/lttechapp:${buildName}'
}
} catch (error) {
println error
}
}
}
post {
success {
script {
cleanWs()
}
}
}
}

}

}"‘我的代理jenkins-opensource-linux是一个安装了docker引擎的linux虚拟机。确保将docker设置为在没有root的情况下使用。这应该很容易实现。

相关内容

  • 没有找到相关文章

最新更新