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,正常情况下是用户名。或者用户组。

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

启动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
<html><head><meta http-equiv='refresh' content='1;url=/login?from=%2F'/><script>window.location.replace('/login?from=%2F');</script></head><body style='background-color:white; color:white;'>
Authentication required

外网不可访问

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

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

总结

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏运维小白

linux基础(day19)

6.1 压缩打包介绍 家用带宽和机房带宽的区别: 家用的IP是动态的、不固定的,而机房的IP却是固定不变的 家用的上传和下载带宽也是不同的;而在机房中的带宽,下...

1988
来自专栏云计算教程系列

如何在Ubuntu 18.04上安装Anaconda Python发行版

Anaconda专为数据科学和机器学习工作流程而设计,是一个开源包管理器,环境管理器,以及Python和R编程语言的分发。它通常用于大规模数据处理,科学计算和预...

1.1K7
来自专栏技术之路

Docker Stack 部署web集群

  Docker越来越成熟,功能也越来越强大。使用Dokcer Stack做服务集群也是非常的方便,docker 自己就提供了负载功能,感觉很方便,就想给大家分...

3045
来自专栏Rainbond开源「容器云平台」

「Rainbond最佳实践」Tomcat配置Redis实现Session共享

1992
来自专栏日常工作总结

Kubernetes中Consul重启自动加入集群实践

近期频繁的容器母机调整导致我们的业务需要多次重启,不得不寻找一种自动重建Consul集群的方式。在网上搜索和学习一番后发现,基本没有针对Kubernetes容器...

2753
来自专栏nice_每一天

docker学习笔记(一)—— ubuntu16.04下安装docker

本文开发环境为Ubuntu 16.04 LTS 64位系统,通过apt的docker官方源安装最新的Docker CE(Community Edition),即...

1023
来自专栏Java呓语

Gerrit 代码评审安装-快速使用手册

文章摘自googlesource,因实际安装环境不同文章内容也会对应做修改。本文基于Unix的操作系统解释说明,不推荐直接参照本文就部署在生产环境。

1072
来自专栏奔跑的蛙牛技术博客

docker简单实用

docker 面向用户 云计算技术 pack ship run --->docker 特点

1173
来自专栏魏艾斯博客www.vpsss.net

Windows2003 安装 IIS 不支持 ASP 解决办法

1982
来自专栏康怀帅的专栏

Linux 安装 Docker

本文介绍最新版本的 Docker CE 安装。 本文内容来自我参与维护的 《Docker 从入门到实践》 项目。 CentOS 7 配置 REPO Instal...

5736

扫码关注云+社区

领取腾讯云代金券