我也是Docker和Jenkins的新手。我有一个关于Dockerfile和docker-compose.yml文件配置的问题。我尝试使用最简单的配置来正确设置这些文件。构建和推送正确完成,但jenkins应用程序未在我的localhost(127.0.0.1)上运行。
如果我理解正确,现在它应默认在端口50000上运行(ARG agent_port = 50000在jenkins“官方”Dockerfile中)。我试图使用50000,8080和80,没有任何工作。请问您有什么建议吗?我正在使用这些文件:https://github.com/fdolsky321/Jenkins_Docker
第二个问题是,处理容器崩溃的最佳方法是什么。可以说,如果容器崩溃,我想重新创建一个具有相同设置的新容器。是创建像“crash.sh”这样的新shell文件并提供信息的最佳方法,我想创建具有相同设置的新容器吗?就像在这里提到的那样:https://blog.codeship.com/ensuring-containers-are-always-running-with-dockers-restart-policy/
感谢您的任何建议。
答案 0 :(得分:3)
为詹金斯设计的docker-compose
version: '2'
services:
jenkins:
image: jenkins:latest
ports:
- 8080:8080
- 50000:50000
# uncomment for docker in docker
privileged: true
volumes:
# enable persistent volume (warning: make sure that the local jenkins_home folder is created)
- /var/wisestep/data/jenkins_home:/var/jenkins_home
# mount docker sock and binary for docker in docker (only works on linux)
- /var/run/docker.sock:/var/run/docker.sock
- /usr/bin/docker:/usr/bin/docker
在主机中根据需要更换端口8080,50000。
使用相同设置重新创建新容器
volumne安装了jenkins_home,是您存放所有工作和设置等的地方。
在创建每个作业或您想要的方式时,备份已安装的卷jenkins_home。 每当发生任何崩溃时,使用相同的docker-compose文件运行Jenkins并将jenkins_home文件夹替换为备份。
再次重新启动/重新启动jenkins
列出容器
docker ps -a
重启容器
docker restart <Required_Container_ID_To_Restart>
答案 1 :(得分:2)
我一直在使用如下所示的docker-compose.yml:
version: '3.2'
volumes:
jenkins-home:
services:
jenkins:
image: jenkins-docker
build: .
restart: unless-stopped
ports:
- target: 8080
published: 8080
protocol: tcp
mode: host
volumes:
- jenkins-home:/var/jenkins_home
- /var/run/docker.sock:/var/run/docker.sock
container_name: jenkins-docker
我的图像是一个本地构建的Jenkins图像,基于jenkins / jenkins:lts,它添加了一些其他组件,如docker本身,我安装了docker socket以允许我在docker上运行命令主办。您的用例可能不需要这样做。对您而言,重要的部分是发布的端口,对我来说只有8080,而/ var / jenkins_home的卷用于保留图像更新之间的Jenkins配置。
要从错误中恢复,我在docker-compose.yml中有restart: unless-stopped
来配置容器自动重启。如果你在群集模式下运行它,那将是自动的。
我通常会避免定义容器名称,但在这种情况下,只会有一个jenkins-docker容器,我希望能够使用docker logs jenkins-docker
查看日志以收集初始管理员之类的内容登录令牌。
我的Dockerfile和此图片的其他依赖项位于:https://github.com/bmitch3020/jenkins-docker
答案 2 :(得分:0)
HyperV with docker for Windows。
在这种情况下,您必须确保将任何已发布的端口(如5000)移植到前端。
打开HyperV管理器,右键单击那里定义的机器:您将能够添加端口转发规则,以便localhost:5000访问您的VM:5000。