Docker 快速安装Jenkins完美教程

参考: Docker 快速安装Jenkins完美教程 (亲测采坑后详细步骤) 参考: Docker:docker安装部署jenkins

  1. 启动docker, 下载Jenkins镜像
$ docker pull jenkins/jenkins
  1. 创建Jenkins挂载目录并授权权限
$ mkdir -p /www/docker/jenkins/home
$ chown -R 1000:1000 /www/docker/jenkins/home
  1. 启动jenkins容器
  • -d: 后台运行镜像
  • --name jenkins: 给容器起一个别名
  • --network mxd: 给容器分配一个网络, 以便与其它容器通讯
  • -p 8080:8080: 将镜像的8080端口映射到服务器的8080端口, 如果使用nginx反向代理, 则可以不映射
  • -p 50000:50000: 将镜像的50000端口映射到服务器的50000端口
  • -v /www:/www: 方便部署代码
  • -v /www/docker/jenkins/home:/var/jenkins_home: /var/jenkins_home目录为容器jenkins工作目录,我们将硬盘上的一个目录挂载到这个位置,方便后续更新镜像后继续使用原来的工作目录。这里我们设置的就是上面我们创建的/www/docker/jenkins/home目录
  • -m 1G: 限制内存最大使用1G, 参考Docker: 限制容器可用的内存
  • --memory-swap 2G: 限制虚拟内存最大使用1G, 参考Docker: 限制容器可用的内存
  • -v /run/docker.sock:/var/run/docker.sock: 容器内可执行宿主机docker命令
  • -v $(which docker):/usr/bin/docker: 容器内可执行docker命令
  • --user root: 容器内有权限执行docker命令
$ docker run -d --name jenkins --network mxd -p 8080:8080 \
  -v /www:/www \
  -v /www/docker/jenkins/home:/var/jenkins_home \
  -m 1G \
  --memory-swap 2G \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v $(which docker):/usr/bin/docker \
  --user root \
  jenkins/jenkins:lts
  1. 【可选】配置镜像加速, 打开文件/www/docker/jenkins/home/hudson.model.UpdateCenter.xml:
<?xml version='1.1' encoding='UTF-8'?>
<sites>
  <site>
    <id>default</id>
    <url>https://updates.jenkins.io/update-center.json</url>
  </site>
</sites>

将上面的网址修改为清华大学官方镜像https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json:

<?xml version='1.1' encoding='UTF-8'?>
<sites>
  <site>
    <id>default</id>
    <url>https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json</url>
  </site>
</sites>

修改文件后, 记得重启jenkins容器: docker restart jenkins

  1. 访问jenkins, 在浏览器中输入你的IP加端口号, eg: 192.168.0.100:8080

  2. 等待3-10分钟, 待出现下方的页面, 将/www/docker/jenkins/home/secrets/initialAdminPassword中的密码拷贝到输入框中, 然后点击继续:

初始化-输入管理员密码

  1. 稍等一会, 出现下方的页面, 我们选择安装推荐的插件:

初始化-安装插件

  1. 喝杯奶茶, 等待插件安装完毕:

初始化-安装插件

  1. 如果出现如下图所示的安装错误, 可以选择重试, 也可以点击继续, 等进入jenkins后再安装. 如果没有错误, 则跳过这一步:

如果一直失败, 则可以尝试离线安装. 也可以将镜像改为jenkins/jenkins:latest, 该版本每周一次更新. 或者删除容器和缓存文件, 重新run一个容器.

初始化-安装失败

  1. 创建管理员账号, 如下图:

初始化-创建管理员账号

  1. 配置jenkins的URL, 默认即可, 如果使用了nginx反向代理等, 可以替换成域名或其他URL:

初始化-实例配置

  1. 到此已全部安装成功,尽情的使用吧!

安装成功

  1. nginx反向代理配置:
server {
    listen 80;
    server_name jenkins.zhangmoxuan.com;

    #反向代理
    location / {
        sendfile off;
        proxy_pass http://jenkins;
        proxy_redirect     default;
        proxy_http_version 1.1;

        # Required for Jenkins websocket agents
        proxy_set_header   Connection        $connection_upgrade;
        proxy_set_header   Upgrade           $http_upgrade;

        proxy_set_header   Host              $host;
        proxy_set_header   X-Real-IP         $remote_addr;
        proxy_set_header   X-Forwarded-For   $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Proto $scheme;
        proxy_max_temp_file_size 0;

        #this is the maximum upload size
        client_max_body_size       10m;
        client_body_buffer_size    128k;

        proxy_connect_timeout      90;
        proxy_send_timeout         90;
        proxy_read_timeout         90;
        proxy_buffering            off;
        proxy_request_buffering    off; # Required for HTTP CLI commands
        proxy_set_header Connection ""; # Clear for keepalive
    }

    access_log  /var/log/nginx/jenkins.zhangmoxuan.com.log;
    error_log   /var/log/nginx/jenkins.zhangmoxuan.com.error.log;
}

# Required for Jenkins websocket agents
map $http_upgrade $connection_upgrade {
        default upgrade;
        '' close;
}

upstream jenkins {
    server jenkins:8080 fail_timeout=0;
}

Dockerfile:(镜像集成了node等, 比较大):

FROM jenkins/jenkins:lts
# if we want to install via apt
USER root
RUN cat /etc/apt/sources.list
RUN sed -i 's/deb.debian.org/mirrors.163.com/g' /etc/apt/sources.list
RUN sed -i 's/security.debian.org/mirrors.163.com/g' /etc/apt/sources.list
RUN cat /etc/apt/sources.list

RUN apt-get update && \
apt-get -y install apt-transport-https \
     ca-certificates \
     curl \
     gnupg2 \
     software-properties-common && \
curl -fsSL https://download.docker.com/linux/$(. /etc/os-release; echo "$ID")/gpg > /tmp/dkey; apt-key add /tmp/dkey && \
add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/$(. /etc/os-release; echo "$ID") \
   $(lsb_release -cs) \
   stable" && \
apt-get update && \
apt-get -y install docker-ce

RUN curl -sL https://deb.nodesource.com/setup_12.x | bash
RUN apt-get install --yes nodejs
RUN node -v
RUN npm -v

编译镜像: $ docker build -t jenkin .