- 1拉取镜像
docker pull jenkins/jenkins:2.319.1-lts
- 2.运行启动
创建jenkins网络 (bridge)
docker network create jenkins
启动docker
docker run --name jenkins -d --privileged=true --network jenkins --network-alias jenkins --env DOCKER_TLS_CERTDIR=/certs --volume /jenkins-docker-certs:/certs/client --volume /jenkins-data:/var/jenkins_home -p 2376:2376 -p 8080:8080 -p 50000:50000 jenkins/jenkins:2.319.1-lts
出现报错::touch: cannot touch ‘/var/jenkins_home/copy_reference_file.log’: Permission denied
Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
chown -R 1000:1000 /jenkins-data
或者启动要加 -u root
. 使用docker-compose
yaml
version: ‘3.1’
services:
jenkins:
image: jenkins/jenkins:2.319.1-lts
container_name: jenkins
privileged: true
user: root
networks:
jenkins:
aliases:
- jenkins
environment:
- DOCKER_TLS_CERTDIR=/certs
volumes:
- ./jenkins-docker-certs:/certs/client
- ./jenkins-data:/var/jenkins_home
ports:
- "2376:2376"
- "8080:8080"
- "50000:50000"
networks:
jenkins:
external: true
启动 docker-compose up -d
中文和英文版对比
用于执行jenkinsjob任务的节点,由于Jenkins本身不推荐在master节点上面执行job任务,固在本服务器上跑个docker 容器用于执行Jenkins的job,容器需要包含ssh maven git java等常用插件
ssh,java准备工作
到oracle下载Java jdk
生成sshkey
ssh-keygen -t rsa
编写ssh启动脚本(docker容器用)
#!/bin/bash
/usr/sbin/sshd -D
Dockerfile
RUN apt-get update &&
apt-get install openssh-server net-tools -y
RUN apt-get install git -y
RUN apt-get install maven -y
RUN mkdir -p /var/run/sshd
RUN mkdir -p /root/.ssh
RUN sed -ri 's/session required pam_loginuid.so/#session required pam_loginuid.so/g' /etc/pam.d/sshd
RUN sed -ri 's/#PermitRootLogin without-password/PermitRootLogin yes/g' /etc/ssh/sshd_config
# 加入sshkey
ADD authorized_keys /root/.ssh/authorized_keys
# 加入脚本
ADD run.sh /run.sh
# 加入jdk
ADD jdk-8u311-linux-x64.tar.gz ./
RUN chmod 755 /run.sh
CMD ["/run.sh"]
docker-compose.yml
services:
ubuntu:
image: ubuntu:18.04_ssh-java-git-maven
container_name: ubuntu_node
ports:
- "8083:22"
networks:
jenkins:
aliases:
- ubuntu_node
deploy:
resources:
limits:
memory: 5000M
reservations:
memory: 500M
logging:
driver: json-file
options:
max-size: "20M"
max-file: "5"
networks:
jenkins:
external: true
启动 docker-compose up -d
jenkins配置
JAVA_TOOL_OPTIONS -Dfile.encoding=UTF8 LANG en_US.UTF-8凭据
clean package -U -Dmaven.test.skip=true
#!/bin/bash
image_name="xmninsharbor01t.fubon.com.cn/devop/service-prpall-policy:0.0.1"
container_name="service-prpall-policy"
# 查找容器id
echo "${container_name}"
old_container_id=$(docker ps -a | grep ${container_name} | awk '{print$1}' )
old_image_id=$(docker ps -a | grep ${container_name} | awk '{print$2}' )
if [ -n "$old_container_id" ]; then
echo "delete old container and image ${container_name}"
docker stop ${old_container_id}
docker rm ${old_container_id}
docker rmi ${old_image_id}
fi
echo "pull image ${image_name}"
docker pull ${image_name}
docker run --net=host -d -m 4096M --memory-swap -1 --log-opt mode=non-blocking --log-opt max-buffer-size=4m -e spring.profiles.active=uat -v /var/log:/log --name ${container_name} ${image_name}
echo "done"
docker api 配置在这里 ,前提是 docker 要开启远程功能
最后运行微服务的SSH remote hosts 的配置系统管理->系统配置



