docker 启动服务遇到的坑及解决方法

docker 启动 jenkins

docker run -d --name jenkins -p 8080:8080 -p 50000:50000 -v ${PWD}/jenkins:/var/jenkins_home jenkins/jenkins

报错:docker: Error response from daemon: driver failed programming external connectivity on endpoint jenkins (01992050d92a06e9e8ad962f6dd13f4a34cc7ff4335aba39626471422e6d777b): Error starting userland proxy: listen tcp 0.0.0.0:8080: bind: address already in use.

  1. 检查端口8080是否真的监听 netstat -anp|grep 8080
  2. 依据端口查看进程:ps -ef|grep 495,杀死进程 kill -9 495
  3. 删除启动的容器:docker rm -f jenkins
  4. 再次启动:docker run -d --name jenkins -p 8080:8080 -p 50000:50000 -v ${PWD}/jenkins:/var/jenkins_home jenkins/jenkins
  5. 查看日志发现没有权限,则 chmod 777 -R jenkins
[root@ronky ~]# netstat -anp|grep 8080
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      495/python          
udp        0      0 0.0.0.0:8080            0.0.0.0:*                           495/python          
[root@ronky ~]# ps -ef|grep 495
root       495     1  0 Jun24 ?        00:00:44 /usr/bin/python /usr/bin/ssserver -c /etc/shadowsocks.json
root     21542 20366  0 18:05 pts/0    00:00:00 grep --color=auto 495
[root@ronky ~]# kill -9 495

[root@ronky ~]# docker logs jenkins
touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?

  1. 再次查看启动日志:docker logs jenkins
  2. 获取 jenkins 首次登陆密码:docker exec -it jenkins cat /var/jenkins_home/secrets/initialAdminPassword
  3. http://47.52.1.103:8080 访问 jenkins
  • 问题:curl http://127.0.0.1:8080 可以访问,但是http://47.52.1.103:8080 不能访问的解决方法
    • 查看云服务器的安全组是否添加 8080 和 50000端口
    • 在服务器关闭防火墙: systemctl stop firewalld

总结 docker run 启动应用遇到的坑:

  • 端口占用报错:docker: Error response from daemon: driver failed programming external connectivity on endpoint jenkins (01992050d92a06e9e8ad962f6dd13f4a34cc7ff4335aba39626471422e6d777b): Error starting userland proxy: listen tcp 0.0.0.0:8080: bind: address already in use.
    • 解决方法:依据占用端口查询出进程,并把进程杀死,再次运行 docker run 即可
  • 权限报错:‘/var/jenkins_home/copy_reference_file.log’: Permission denied Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
    • 解决方法:chmod 777 -R jenkins,重启容器
  • docker 启动服务成功后,http://47.52.1.103:8080 访问不了
    • 解决思路:curl http://127.0.0.1:8080 是否可以访问,如果可以则服务启动正常
    • 查看云服务器的安全组是否添加 8080 和 50000端口
    • 在服务器关闭防火墙: systemctl stop firewalld
1 Like