docker下安装部署jenkins(一)

前言

本文带你在docker中安装jenkins服务,为入门级别的介绍,建议阅读时间10-15min.

检查是否安装docker

docker --version 
复制代码

拉取镜像

// 拉取镜像
docker pull jenkins 
// 拉取成功提示
Digest: sha256:eeb4850eb65f2d92500e421b430ed1ec58a7ac909e91f518926e02473904f668
Status: Downloaded newer image for jenkins:latest
//通过命令查看本地具有的所有镜像
docker images
复制代码

简单配置

你需要配置jenkins的相关目录,并且给其对应的权限,这两者都是必备的。

mkdir -p /root/jenkins_home
chown -R 1000  /root/jenkins_home
复制代码

解说:mkdir 是创建文件夹的命令,-p代表强制创建目录,就是说如果没有中间目录的时候也会顺便创建其父目录。 而chown用来更改某个目录或文件的用户名和用户组,而chmod是修改文件夹的修改权限,其是有差别的,而我们一般修改的是文件所有者的权限,1000指的是用户的id,正常情况下是用户名。或者用户组。

这里多说一点,建议大家多去看比较正规或者完善一点的教程,不要随便百度一般网友的回复或者博客,尽量关注大佬或者比较官方的,有人维护的一些技术文档。这里提供的是菜鸟教程的一些简单说明,作为入门掌握还是足够的。

  • linux的chown
  • linux的chmod

启动jenkins服务

docker run  -d -p 8080:8080  --name myjenkins    -v /root/jenkins-home:/root/jenkins_home  jenkins
复制代码

命令解读:docker run 是运行所有docker镜像的标准写法,其中-d代表后台运行,-p指的是映射容器端口与服务器端口,--name指 的是对镜像所自定义的名称,当不方便使用容器id的时候,可以使用名字对其进行查看或者删除,-v指的是自定义配置jenkins目录,最后的参数jenkins指的是使用的是本地的jenkins镜像。

查看日志记录其秘钥

这一步是在正常启动后,顺便查看下其日志,因为其后续是需要的。所以不妨直接进入日志查看下,当然也可以通过其他方式进行查看。

注意事项

查看全部状态的docker容器

可以查看到所有的容器,包括退出的,启动的,线上的等

docker ps -a
// 其实你可以rm ,stop后执行多个容器的,空格隔开就可以
docker rm myjenkins1 myjenkins2 heuristic_lamarr quirky_kirch
复制代码

用ps查看jenkins服务的具体情况

ps -ef |grep jenkins
www       4470  4453  0 9月23 ?       00:00:02 /bin/tini -- /usr/local/bin/jenkins.sh
www       4501  4470  0 9月23 ?       00:01:38 java -jar /usr/share/jenkins/jenkins.war
root      6213  5885  0 21:14 pts/0    00:00:00 grep --color=auto jenkins
复制代码

jenkins部分是否需要java环境,tomcat服务做端口监听

jenkins镜像本身同时具有这两者,所以不用操心了。如果你按照上面的配置完成启动,正常情况下就可以通过ip+端口访问到你的jenkins界面了。

启动失败的情况

1 容器名称重复,解决办法:将容器的名字也就是--name后的参数换掉即可

docker: Error response from daemon: Conflict. The container name "/myjenkins" is already in use by container
复制代码

2 端口冲突,其他服务已经占用,解决办法,查看所有的端口占用情况或者直接查看某端口下是否有服务。

//报错
 Bind for 0.0.0.0:8080 failed: port is already allocated.
//查看端口占用情况
netstat -tunlp 
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      14379/nginx: master 
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      15847/sshd          
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      10245/mysqld        
tcp6       0      0 :::8080                 :::*                    LISTEN      4447/docker-proxy   
tcp6       0      0 :::8099                 :::*                    LISTEN      1508/docker-proxy   
udp        0      0 0.0.0.0:68              0.0.0.0:*                           777/dhclient        
udp        0      0 172.17.0.1:123          0.0.0.0:*                           24745/ntpd          
udp        0      0 172.16.199.194:123      0.0.0.0:*                           24745/ntpd    
// netstat -tunlp | grep 8080
//如果端口占用是不合理的情况,可以关掉其端口的进程,kill -9 进程id

复制代码

3 文件没有权限,设置权限即可

如果在服务器上查看是否启动成功

你可以通过docker ps 查看所有的启动好的容器,也可以通过docker ps | grep containerName 来具体查看你的服务启动状态,如果为up就是正常的。

docker ps | grep myjenkins
1df370bbb026        jenkins             "/bin/tini -- /usr/l…"   24 hours ago        Up 24 hours         0.0.0.0:8080->8080/tcp, 50000/tcp   myjenkins
复制代码

你也可以通过curl ip+端口进行访问,如果启动正常,其和浏览器一样会返回其页面代码的部分。

curl localhost:8080
'refresh' content='1;url=/login?from=%2F'/>'background-color:white; color:white;'>
Authentication required
复制代码

外网不可访问

我遇到的就是这种情况,被坑了比较久,也是自己比较小白的原因。 1 查看防火墙的状态,之前的linux系统可能是用iptables的,最新的都是用firewalld.service来进行相应的管理的。 相关参考:firewalld.serivce

2 查看你的云服务器是否有单独的安全组设置,我就是被这部分坑的。 主要是因为阿里云服务器针对其他端口默认是不对外开放的,你需要单独设置增加规则才可以。

  • 百度经验:开放阿里云端口

总结

本文就到这里,还没有涉及到基本的部署配置,等待我下一篇更新吧。

你可能感兴趣的:(docker下安装部署jenkins(一))