- 打开终端
- 在docker中创建一个名为
jenkins
的桥接网络
docker network create jenkins
- 创建以下volume以共享需要连接到docker守护进程并保存Jenkins数据的docker客户端TLS证书。
docker volume create jenkins-docker-certs
docker volume create jenkins-data
- 为了在Jenkins节点里执行docker命令,下载并运行镜像docker:dind。
docker container 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
方便执行的命令:
docker container 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
命令说明
--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 下载该镜像。
- 下载并运行镜像jenkins/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
方便执行的命令:
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。
1)浏览器访问localhost:8080
(8080是你上面步骤配置的端口),会看到以下Unlock页面
进入jenkins容器:docker exec -it jenkins-blueocean /bin/bash
,接着查看密码文件:cat /var/jenkins_home/secrets/initialAdminPassword
$ docker exec -it jenkins-blueocean /bin/bash
bash-4.4$ cat /var/jenkins_home/secrets/initialAdminPassword
8ae785c439aa4146abdc40567bdac2f2
拷贝密码贴入Administrator password,继续。
2)进入插件安装环节,按照实际情况选择你想要的插件安装。
后续还可以通过Jenkins页面中的 Manage Jenkins -> Manage Plugins 来添加插件。
后续还可以通过Jenkins页面中的 Manage Jenkins -> Manage Plugins 来添加插件。
3)创建第一个用户
可以选择使用admin账户,也可创建新的管理员账户。
后面如果忘记密码,可以进入容器docker exec -it jenkins-blueocean /bin/bash
,通过/var/jenkins_home/users/users.xml
文件查看
4)实例配置
配置jenkins的地址,本地环境可以默认localhost,要给其他人用的话还是配一下jenkins在网络中的地址。
至此安装结束,欢迎来到Jenkins!
参考:https://jenkins.io/doc/book/installing/