如何使用为 jenkins 管道安装的 maven jdk 和 docker 创建 Dockerfile
How to creating Dockerfile with maven jdk and docker installed for jenkins pipeline
由于我在 dockerhub 上找不到具有 maven 3.8.1 的 docker 图像,打开 jdk 11 并安装了 docker,我尝试创建一个带有 Dockerfile。我对此很陌生,因此面临问题。下面是我的 Dockerfile 的样子
FROM maven:3.8.1-adoptopenjdk-11
RUN apt update -y
RUN apt install -y curl
RUN curl https://get.docker.com/builds/Linux/x86_64/docker-latest.tgz | tar xvz -C /tmp/ && mv /tmp/docker/docker /usr/bin/docker
RUN docker ps
当我执行 docker build -t demo .
时,我得到以下错误日志
docker/docker-containerd
38 27.1M 38 10.3M 0 0 18.5M 0 0:00:01 --:--:-- 0:00:01 18.5Mdocker/docker-proxy
docker/docker-containerd-ctr
docker/dockerd
docker/docker-runc
100 27.1M 100 27.1M 0 0 19.7M 0 0:00:01 0:00:01 --:--:-- 19.7M
Removing intermediate container f4cd71aa05d2
---> 7b0055db2e58
Step 5/5 : RUN docker ps
---> Running in 83919a2985bf
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
我的目标是创建一个 Dockerfile,可以在 jenkins 管道中使用它来构建 maven spring 引导项目 (mvn spring-boot:build-image
)。有人可以指导我了解 Dockerfile 吗?
谢谢。
这是一个 Dockerfile,用于在您用作基础的 Maven 映像上安装 docker-ce-cli
包。您不需要 docker-ce
或 containerd
。安装命令取自 docker 网站。
FROM maven:3.8.1-adoptopenjdk-11
RUN apt update && \
apt install -y ca-certificates curl gnupg lsb-release && \
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg && \
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null && \
apt update && \
apt install -y docker-ce-cli
然后,当你 运行 它时,你将主机上的 /var/run/docker.sock 映射到容器中的 /var/run/docker.sock,现在容器可以与 docker 主机上的守护进程。
这是我在 Windows 上 运行 的方式。映射前面的 2 个斜线是由于 Windows 和 WSL2 的工作方式。在 Linux 主机上,你会做 -v /var/run/docker.sock:/var/run/docker.sock
.
C:\>docker build -t dind .
C:\>docker run --rm -it --entrypoint /bin/bash -v "//var/run/docker.sock:/var/run/docker.sock" dind
root@d63b0fedd3e4:/# mvn --version
Apache Maven 3.8.1 (05c21c65bdfed0f71a2f2ada8b84da59348c4c5d)
Maven home: /usr/share/maven
Java version: 11.0.11, vendor: AdoptOpenJDK, runtime: /opt/java/openjdk
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "5.4.72-microsoft-standard-wsl2", arch: "amd64", family: "unix"
root@d63b0fedd3e4:/# java --version
openjdk 11.0.11 2021-04-20
OpenJDK Runtime Environment AdoptOpenJDK-11.0.11+9 (build 11.0.11+9)
OpenJDK 64-Bit Server VM AdoptOpenJDK-11.0.11+9 (build 11.0.11+9, mixed mode)
root@d63b0fedd3e4:/# docker --version
Docker version 20.10.11, build dea9396
root@d63b0fedd3e4:/# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d63b0fedd3e4 dind "/bin/bash" 19 seconds ago Up 18 seconds nifty_zhukovsky
root@d63b0fedd3e4:/#
我希望这能让你开始,你可以添加你需要的任何其他包的安装。
由于我在 dockerhub 上找不到具有 maven 3.8.1 的 docker 图像,打开 jdk 11 并安装了 docker,我尝试创建一个带有 Dockerfile。我对此很陌生,因此面临问题。下面是我的 Dockerfile 的样子
FROM maven:3.8.1-adoptopenjdk-11
RUN apt update -y
RUN apt install -y curl
RUN curl https://get.docker.com/builds/Linux/x86_64/docker-latest.tgz | tar xvz -C /tmp/ && mv /tmp/docker/docker /usr/bin/docker
RUN docker ps
当我执行 docker build -t demo .
时,我得到以下错误日志
docker/docker-containerd
38 27.1M 38 10.3M 0 0 18.5M 0 0:00:01 --:--:-- 0:00:01 18.5Mdocker/docker-proxy
docker/docker-containerd-ctr
docker/dockerd
docker/docker-runc
100 27.1M 100 27.1M 0 0 19.7M 0 0:00:01 0:00:01 --:--:-- 19.7M
Removing intermediate container f4cd71aa05d2
---> 7b0055db2e58
Step 5/5 : RUN docker ps
---> Running in 83919a2985bf
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
我的目标是创建一个 Dockerfile,可以在 jenkins 管道中使用它来构建 maven spring 引导项目 (mvn spring-boot:build-image
)。有人可以指导我了解 Dockerfile 吗?
谢谢。
这是一个 Dockerfile,用于在您用作基础的 Maven 映像上安装 docker-ce-cli
包。您不需要 docker-ce
或 containerd
。安装命令取自 docker 网站。
FROM maven:3.8.1-adoptopenjdk-11
RUN apt update && \
apt install -y ca-certificates curl gnupg lsb-release && \
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg && \
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null && \
apt update && \
apt install -y docker-ce-cli
然后,当你 运行 它时,你将主机上的 /var/run/docker.sock 映射到容器中的 /var/run/docker.sock,现在容器可以与 docker 主机上的守护进程。
这是我在 Windows 上 运行 的方式。映射前面的 2 个斜线是由于 Windows 和 WSL2 的工作方式。在 Linux 主机上,你会做 -v /var/run/docker.sock:/var/run/docker.sock
.
C:\>docker build -t dind .
C:\>docker run --rm -it --entrypoint /bin/bash -v "//var/run/docker.sock:/var/run/docker.sock" dind
root@d63b0fedd3e4:/# mvn --version
Apache Maven 3.8.1 (05c21c65bdfed0f71a2f2ada8b84da59348c4c5d)
Maven home: /usr/share/maven
Java version: 11.0.11, vendor: AdoptOpenJDK, runtime: /opt/java/openjdk
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "5.4.72-microsoft-standard-wsl2", arch: "amd64", family: "unix"
root@d63b0fedd3e4:/# java --version
openjdk 11.0.11 2021-04-20
OpenJDK Runtime Environment AdoptOpenJDK-11.0.11+9 (build 11.0.11+9)
OpenJDK 64-Bit Server VM AdoptOpenJDK-11.0.11+9 (build 11.0.11+9, mixed mode)
root@d63b0fedd3e4:/# docker --version
Docker version 20.10.11, build dea9396
root@d63b0fedd3e4:/# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d63b0fedd3e4 dind "/bin/bash" 19 seconds ago Up 18 seconds nifty_zhukovsky
root@d63b0fedd3e4:/#
我希望这能让你开始,你可以添加你需要的任何其他包的安装。