我创建了一个基于jenkins/jenkins:lts-jdk11
的Dockerfile
我正在尝试安装docker+docker-compose,这样当我为CD/CI创建管道时,jenkins就可以访问它。
这是我的Dockerfile:
FROM jenkins/jenkins:lts-jdk11 AS jenkins
WORKDIR /home/jenkins
RUN chown -R 1000:1000 /var/jenkins_home
USER root
# Install aws cli version 2
RUN apt-get update && apt-get install -y unzip curl vim bash sudo
RUN curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
RUN unzip awscliv2.zip
RUN ./aws/install
#Install docker cli command
RUN sudo apt-get update
RUN sudo apt install -y apt-transport-https ca-certificates curl gnupg lsb-release
RUN curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
RUN echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
RUN sudo apt-get update
RUN sudo apt-get install -y docker-ce docker-ce-cli containerd.io
##Install docker compose
RUN mkdir -p /usr/local/lib/docker/cli-plugins
RUN curl -SL https://github.com/docker/compose/releases/download/v2.2.3/docker-compose-linux-x86_64 -o /usr/local/lib/docker/cli-plugins/docker-compose
RUN chmod +x /usr/local/lib/docker/cli-plugins/docker-compose
RUN sudo usermod -a -G docker jenkins
docker命令在容器中运行良好,但一旦我开始构建图像,它就会显示以下错误:
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
如果我尝试用service docker start
启动docker服务,我会得到以下错误:
mkdir: cannot create directory ‘cpuset’: Read-only file system
我不知道如何解决这个问题。
TIA-
我在尝试使用ECS Fargate在Jenkins容器内运行docker时遇到了同样的问题。
TLDR:Fargate不支持特权容器。所以您需要切换到EC2才能运行docker。
我使用了以下设置:
FROM jenkins/jenkins:lts-jdk11
USER root
# Install Docker and Docker Compose
RUN apt-get update
RUN apt-get install -y apt-transport-https
ca-certificates
curl
gnupg-agent
software-properties-common &&
curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add - &&
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
RUN apt-get update &&
apt-get install -y docker-ce docker-ce-cli containerd.io &&
curl -L https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose &&
chmod +x /usr/local/bin/docker-compose
# Install necessary plugins for Jenkins
RUN jenkins-plugin-cli --plugins
docker-workflow
blueocean
pipeline-utility-steps
cloudbees-folder
# Setup Debian to use the legacy iptables instead of nftables
RUN update-alternatives --set iptables /usr/sbin/iptables-legacy &&
update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
# Expose ports for Jenkins
EXPOSE 8080
应使用以下命令启动集装箱:
docker run --privileged -p 8080:8080 -v jenkins_home:/var/jenkins_home myjenkins
在运行任何docker命令之前,请使用service docker start
命令启动docker。
容器不使用init系统。因此无法启动Docker服务。