其他文章有记录前期的准备
1.vmware准备虚拟机,一堆坑请见其他文章
2.安装jenkins请见jenkins实践及docker实践
3.docker相关请见docker实践
等有时间把这些汇总在这一篇文章内,从零开始搭建一个完整的k8s+docker+jenkins的流程,并生成一个脚本或者镜像
==============================================================================
1.虚拟机安装:
从163下载的额镜像安装后没有eth0,ip a没ip且不能来接外网,具体办法见其他文找机会汇总在这里
mark一下,从163镜像站下载的镜像是没啥东西的,需要安装的东西有:
yum install -y net-util
===============================================================================
2.docker
=================================================================
3.安装jenkins:可参考官方文档
服务器512刚刚凑合
安装 yum install,选择docker而不是docker client
执行下面代码
docker run \
-u root \
-d \
-p 8080:8080 \
-p 50000:50000 \
-v jenkins-data:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
jenkinsci/blueocean
这个时候会报一个错误:/usr/bin/docker-current: Error response from daemon: driver failed programming external connectivity on endpoint gallant_mclean (5ad14ff0ee6d58001cf64188306233b8bfa5e35bf052a60e768aa38509fab080): exec: "docker-proxy": executable file not found in $PATH
解决方案:
cd /usr/libexec/docker/ ln -s docker-proxy-current docker-proxy
还有一个连接也直接ln上,否则后续也会报这个错。
光改链接没有用,还需要在path内配置/usr/libexec/docker/的路径,否则不识别,这就是为啥用基础景象搭建环境,能测试出所有的问题。export也不行,至于原因,可能是没有同步或者需要重新docker,但是的确试过重启。最后还是通过配置到/etc/profile里面然后source一下这个文件实现的
再执行一次那堆run,报新的错误,因为之前执行过一次导致端口50000被占用,然后咋办?
报错内容:
/usr/bin/docker-current: Error response from daemon: driver failed programming external connectivity on endpoint friendly_poitras (fd438b6f96fbe999b665749333a5a30a70cb7af2540adeaf4a6105983bde7c72): Bind for 0.0.0.0:50000 failed: port is already allocated
解决方案 及原因:
重启docker systemctl restart docker即可。或者ps -ef |grep docekr ,然后kill掉。这个一步需要改进怎么才能清楚失败的占用,尝试过docker system prune,未奏效。必须重启。待改进
启动jenkins的时候会卡在一个空白页面,为啥?因为默认设置是访问google。需要进入docker内,docker exec -it 容器名称 /bin/bash ,然后进入var,jenkinshome,进到update,然后修改defau.json里面的google换成baidu之类的
之后就成功了。
进入后发现jenkin是中文界面,不爽,怎么切换成英文装个逼?浏览器设置中设置为英语,jenkins就会显示成英语。浏览器不想改但是又想切成中文咋办?装一个插件,在jenkins里设置local设置为中文即可
至此,jenkins搭建完毕
==========================================================
docker 技巧:
docker的挂载docke run -v xxx:/xxx/xxx 这个命令不简单,当虚拟机的xxx是一个相对路径时,绝对不是指相对于当前路径,而是相对于/var/lib/docker/volumes/ 山哥威武。
还有一个技巧 docker inspect xxx镜像名称,查看这个镜像的一些信息,比如mount到了啥鬼
当执行docker system prune的时候,会把这些挂在也全部删除,在/var/lib/docker/volumes下的文件就被删了,比如jenkins-data