docker中安装配置jenkins
2021-11-14 本文已影响0人
TheRaging
//创建桥接网络
docker network create jenkins
为了在Jenkins节点里执行docker命令,下载并运行镜像docker:dind。
docker run
--name jenkins-docker
--rm
--detach
--privileged
--network jenkins
--network-alias docker
--env DOCKER_TLS_CERTDIR=/certs
--volume jenkins-docker-certs:/certs/client
--volume jenkins-data:/var/jenkins_home
--publish 2376:2376
docker:dind
--storage-driver overlay2
命令说明
- --name jenkins-docker: (可选) 指定用于运行镜像的docker容器名。不指定默认会生成一个唯一的容器名。
- --rm: (可选) 当容器停止时会被自动删除,也包括下面提到的jenkinsci/blueocean这个容器调用时所使用的缓存。
- --detach: (可选) 容器在后台运行。此实例可以通过运行docker container stop jenkins-docker停止,并通过docker container start jenkins-docker再次启动。
- --privileged: 在当前docker中运行其他docker需要特权访问才能正常运行。使用较新的linux内核版本可放宽此要求。
- --network jenkins: 让容器使用先前步骤2创建的网络。
- --network-alias docker: 使docker作为容器的网络别名,在上边声明的jenkins网络中可作为主机名使用。
- --env DOCKER_TLS_CERTDIR=/certs: 允许在docker服务器中使用TLS。尽管它需要使用下面提到的volume, 但由于使用了特权容器,因此建议这样做。此环境变量指定的是Docker TLS证书的根目录。
- --volume jenkins-docker-certs:/certs/client: 将容器中的/certs/client目录映射到之前创建的名为jenkins-docker-certs的volume上。
- --volume jenkins-data:/var/jenkins_home: 将容器中的/var/jenkins_home目录映射到之前创建的名为jenkins-data的volume上。这将允许由docker容器守护进程控制的其他docker容器从Jenkins装载数据。
- --publish 2376:2376: (可选) 公开主机上的docker守护进程端口。这对在主机上执行docker命令去控制其内部的docker守护进程很有用。
docker:dind: 要运行的docker:dind镜像(没有会自动下载)。也可在之前通过命令 docker image pull docker:dind 下载该镜像。
下载并运行镜像 jenkinsci/blueocean
docker container run
--name jenkins-blueocean
--rm
--detach
--network jenkins
--env DOCKER_HOST=tcp://docker:2376
--env DOCKER_CERT_PATH=/certs/client
--env DOCKER_TLS_VERIFY=1
--publish 8080:8080
--publish 50000:50000
--volume jenkins-data:/var/jenkins_home
--volume jenkins-docker-certs:/certs/client:ro
jenkinsci/blueocean
命令说明
- --name jenkins-blueocean: (可选) 给docker镜像jenkinsci/blueocean的实例指定容器名,该名字可用于在docker命名中指代该容器。
- --rm: (可选) 当容器jenkins-blueocean停止时会被自动删除。
- --detach: (可选) 在后台运行jenkinsci/blueocean容器并显示容器ID。不指定会直接在控制台打印日志信息。
- --network jenkins: 让容器使用先前步骤2创建的网络。能够让此容器通过docker主机名去访问第3步创建的docker守护程序。
- --env DOCKER_HOST=tcp://docker:2376: 指定 docker,docker-compose,以及其他docker工具连接先前步骤创建的docker守护程序 要用的环境变量。
- --publish 8080:8080: 映射容器jenkinsci/blueocean的8080端口到主机的8080端口。前面的数字代表主机的端口,后面的数字代表容器的端口。因此如果我们指定参数 -p 49000:8080 , 就能在主机上使用端口49000去访问Jenkins。
- --publish 50000:50000: (可选)映射jenkinsci/blueocean的50000端口到主机的50000端口。仅当你在其他机器上设置了一个或多个基于JNLP的Jenkins代理时才需要这样做,这些代理又与jenkinsci/blueocean容器(充当"主" Jenkins服务器,或仅充当"Jenkins主服务器")有交互。默认情况下,基于JNLP的Jenkins代理通过TCP端口50000与Jenkins主服务器通信,你可以通过页面"Configure Global Security"改变在Jenkins主服务器上的这个端口。如果你要改变Jenkins主服务器用于JNLP代理的TCP端口为 51000 ,那么你就要重启Jenkins容器,并且在启动命令上加发布选项 --publish 52000:51000,后面的数字51000代表Jenkins主服务器上你要改变的值,前面的数字52000代表Jenkins主服务器所在的主机端口(端口用于基于JNLP的Jenkins代理与Jenkins主服务器的通信)。
- --volume jenkins-data:/var/jenkins_home: 映射容器里的路径/var/jenkins_home到名为jenkins-data的docker volume中。也可以将容器里的路径/var/jenkins_home映射到本地计算机的路径上来代替映射到docker volume上,如指定选项--volume $HOME/jenkins:/var/jenkins_home,对应的本机路径一般为 /Users//jenkins 或 /home//jenkins。注意如果你为此更改了源volume或路径,上面创建的docker:dind容器的volume也需要相应更新。
- --volume jenkins-docker-certs:/certs/client:ro: 映射路径/certs/client到先前创建的名为jenkins-docker-certs的volume上。这会使连接docker守护程序所需的客户端TLS证书在环境变量DOCKER_CERT_PATH指定的路径中可用。
jenkinsci/blueocean: 要启动的镜像jenkinsci/blueocean。如果该镜像还未下载,会自动下载该镜像。如果该镜像有更新,也会自动下载镜像更新文件。
//查看日志 从日志里查找jenkins的密码
docker logs 容器ID或者容器名称
设置maven 和jdk 挂载目录
maven和jdk都可以安装在本地 然后使用挂载目录 吧本地的目录和jenkines容器里的目录关联起来 然后就可以使用了
-v 本地目录:jenkines容器的目录
这里注意 jenkines的挂载目录一定要是不存在的文件夹才行,否则会启动容器失败