docker 学习及jenkins安装在docker上

这篇具有很好参考价值的文章主要介绍了docker 学习及jenkins安装在docker上。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

##.什么是docker
Docker是基于Go语言实现的云开源项目。
Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP(可以是一个WEB应用或数据库应用等等)及其运行环境能够做到“一次封装,到处运行”。

Linux 容器技术的出现就解决了这样一个问题,而 Docker 就是在它的基础上发展过来的。将应用运行在 Docker 容器上面,而 Docker 容器在任何操作系统上都是一致的,这就实现了跨平台、跨服务器。只需要一次配置好环境,换到别的机子上就可以一键部署好,大大简化了操作

Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。它是目前最流行的 Linux 容器解决方案。

而 Linux 容器是 Linux 发展出了另一种虚拟化技术,简单来讲, Linux 容器不是模拟一个完整的操作系统,而是对进程进行隔离,相当于是在正常进程的外面套了一个保护层。对于容器里面的进程来说,它接触到的各种资源都是虚拟的,从而实现与底层系统的隔离。

1.2 Docker和虚拟机的区别

Docker可以让一个应用在任何操作系统中非常方便的运行。而以前我们接触的虚拟机,也能在一个操作系统中,运行另外一个操作系统,保护系统中的任何应用。

两者有什么差异呢?

虚拟机(virtual machine)是在操作系统中模拟硬件设备,然后运行另一个操作系统,比如在 Windows 系统里面运行 Ubuntu 系统,这样就可以运行任意的Ubuntu应用了。

Docker仅仅是封装函数库,并没有模拟完整的操作系统,如图:

docker jenkins,学习,docker

对比来看:
docker jenkins,学习,docker

小结:

Docker和虚拟机的差异:

docker是一个系统进程;虚拟机是在操作系统中的操作系统
docker体积小、启动速度快、性能好;虚拟机体积大、启动速度慢、性能一般

Docker将用户程序与所需要调用的系统(比如Ubuntu)函数库一起打包
Docker运行到不同操作系统时,直接基于打包的函数库,借助于操作系统的Linux内核来运行

我们用的传统虚拟机如 VMware , VisualBox 之类的需要模拟整台机器包括硬件,每台虚拟机都需要有自己的操作系统,虚拟机一旦被开启,预分配给它的资源将全部被占用。每一台虚拟机包括应用,必要的二进制和库,以及一个完整的用户操作系统。

2 docker的安装(centos7.9 为例)

2.1 下载及配置

  • 下载命令

    curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

  • 创建/etc/docker/daemon.json文件

       cd /etc/
       ls
       mkdir docker
       cd docker/
       touch daemon.json
       vim /etc/docker/daemon.json
    
  • 写入配置镜像加速

{
"registry-mirrors": ["https://zfzbet67.mirror.aliyuncs.com"]
}
  • 免去sudo

     sudo groupadd docker  # 创建新用户组
     sudo gpasswd -a $USER docker # 当前用户加入用户组
     newgrp docker # 刷新用户组权限
    

2.2 启动服务及运行hello-world

  • 启动docker服务

      systemctl start docker
    
  • 运行hello-world

      docker run hello-world
    

    看到下图即是成功
    docker jenkins,学习,docker

2.3 docker架构

  • docker是C/S架构
    docker client 发送指令
    docker server 接收指令,管理镜像,容器,系统资源
    docker jenkins,学习,docker

3 docker命令

  • docker命令分为 镜像、网络、文件存储、容器(重点)四大类命令

3.1 镜像

镜像操作使用image命令

	docker image --help
Commands:
  build       Build an image from a Dockerfile 构建镜像
  history     Show the history of an image 查看构建镜像历史
  import      Import the contents from a tarball to create a filesystem image 从tarball导入内容以创建文件系统映像
  inspect     Display detailed information on one or more images 显示一个或多个映像的详细信息
  load        Load an image from a tar archive or STDIN 从tar存档或STDIN加载映像
  ls          List images 列出映像
  prune       Remove unused images 删除未使用的映像
  pull        Pull an image or a repository from a registry 从仓库拉取镜像
  push        Push an image or a repository to a registry 推送到仓库
  rm          Remove one or more images 删除镜像
  save        Save one or more images to a tar archive (streamed to STDOUT by default)导出镜像
  tag         Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE 给镜像打标签
  • docker image pull 镜像名 从仓库中(国外)拉取镜像
    docker jenkins,学习,docker
  • docker image ls 查看当前镜像列表
    docker jenkins,学习,docker
  • docker image inspect 镜像名 列出一些详细信息
    docker jenkins,学习,docker

3.2 网络

3.3 文件存储

为了持久化存在容器里的东西,不会随着容器的销毁而数据随之销毁

  • 创建数据卷 一般在/var/lib/docker/volumes
docker volume create jenkins-all-data
  • 查看数据卷
docker volume ls
  • 删除数据卷
 docker volume rm my-vol

3.4 容器

  • 查看运行过的容器(包括已经暂停的)
docker container  ps -la
  • 查看正在运行的容器
docker container  ps 

3.5 删除镜像步骤

3.5.1
  • 查看运行过的容器
docker container ps -a
  • 停止该容器运行
docker container stop 容器id
  • 移除该容器
docker container rm 容器id
  • 查看docker镜像
docker image ls
  • 删除该镜像
docker image rm 镜像名称或镜像id(hello-world:latest)
3.6查看镜像内容器目录
  • 其中 <image_name> 是Docker镜像的名称或ID,<directory_path> 是您想要查看的目录路径。此命令将创建一个新的容器,列出指定目录中的所有文件和子目录,并在完成后立即删除该容器
docker run --rm -it <image_name> ls <directory_path>
docker run --rm -it  jenkins/jenkins ls

docker jenkins,学习,docker

  • -v与–mount的区别

     -v 和 --mount 都可以用于将主机上的目录或文件挂载到容器中或将容器中的目录或文件挂载到主机上。
     --mount 选项支持更多的选项和更高级的用法,例如使用 type 选项指定挂载类型(例如 bind、volume 或 tmpfs)、使用 source 选项指定数据卷名称、使用 target 选项指定容器中的目标挂载点、使用 readonly 选项指定只读挂载等。此外,--mount 还支持在运行时动态添加和删除挂载点,而 -v 不支持此功能。
    
3.7进入容器内部
  • 需要容器在运行中 一般使用/bin/bash功能全一点
docker exec -it  CONTAINER_ID  /bin/bash
docker exec -it  CONTAINER_ID  /bin/sh

4.docker上安装Jenkins ( 需要java jdk)

4.1.搜索 Jenkins 镜像

docker search jenkins

docker jenkins,学习,docker

docker jenkins,学习,docker

4.2.拉取镜像

docker image pull jenkins/jenkins

安装镜像
docker jenkins,学习,docker

4.3.创建 Jenkins 挂载目录并赋予权限

cd /usr/local
mkdir jenkins

4.4.创建并启动 Jenkins 容器

主义 9001和50000端口先在服务器上开启
docker jenkins,学习,docker

docker run -d \
    -p 9001:8080 \
    -p 50000:50000 \
    -v /usr/local/jenkins:/var/jenkins_home \
    -v /etc/localtime:/etc/localtime \
    --restart=always \
    --name=jenkins \
    jenkins/jenkins 
  • -d:后台运行容器;
  • -p 9001:8080:将容器的 8080 端口映射到服务器的 9001端口;
  • -p 50000:50000:将容器的 50000 端口映射到服务器的 50000 端口 好像与jenkins相关;
  • -v /usr/local/jenkins:/var/jenkins_home:将容器中 Jenkins 的工作目录挂载到服务器的 /usr/local/jenkins;
  • -v /etc/localtime:/etc/localtime:让容器使用和服务器同样的时间设置;
  • –restart=always:设置容器的重启策略为 Docker 重启时自动重启;
  • –name=jenkins:给容器起别名
  • jenkins/jenkins:镜像名称
docker ps -la

出现下图就算成功
docker jenkins,学习,docker

重新启动jenkins

docker run -d jenkins/jenkins 

查看启动日志

docker logs jenkins

4.5 jenkins国内镜像加速

cd /usr/local/jenkins
cat hudson.model.UpdateCenter.xml

docker jenkins,学习,docker
将此文件的url替换为

https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

docker jenkins,学习,docker

4.6 本地配置jenkins

  • 使用公网地址+服务器映射docker 8080的端口号 我的是9001 ·-p 9001:8080
    docker jenkins,学习,docker
  • 获得初始密码 填入地址中
cat /usr/local/jenkins/secret/initialAdminPassword

出现下面界面就算成功
docker jenkins,学习,docker

  • 选择第一个安装jenkins插件

docker jenkins,学习,docker

  • 设置管理员账号
    docker jenkins,学习,docker
  • 确认jenkins连接
    docker jenkins,学习,docker
  • 进入jenkins! 看到此界面就是成功
    docker jenkins,学习,docker

4.7 Jenkins设置中文

一、下载Locale插件

1.点击【Manage Jenkins】->【Manage Plugins】选项。

2.点击【可选插件】选项,右侧输入【Locale】选项。

3.勾选【插件选项】,点击【直接安装】选项。

4.重启Jenkins:在URL后加上【/restart】,点击【回车】,点击【是】即可。

二、设置为中文

1.点击【Manage Jenkins】->【Configure System】选项。

2.找到【Locale】选项,输入【zh_CN】,勾选下面的选项,最后点击【保存】和【应用】即可
详细操作

4.8 重启Jenkins

在浏览器地址最后加上/restart即可

4.9 能在jenkins镜像里使用docker命令

  • 可以看见目前容器是不可以使用docker命令的
    若想使用jenkins运行其它的镜像 如运行自动化测试时则需要能使用docker命令;
    目的是在此镜像内操作其它容器

      当然这样一来Jenkins就可以管理所有容器了,包括他们自己,存在一定风险
    

docker jenkins,学习,docker

  • 停止某个镜像

      docker container stop ${container id}
    

docker是通过 docker client 调用docker socket向docker server 发出请求

  • 找到docker client
which docker
/usr/bin/docker

docker jenkins,学习,docker

  • 找到docker socket(一般都是都在这个目录下)

      /var/run/docker.sock
    
docker run -d \
    -p 9001:8080 \
    -p 50000:50000 \
    -v /usr/local/jenkins:/var/jenkins_home \
    -v /etc/localtime:/etc/localtime \
    -v /usr/bin/docker:/usr/bin/docker \
    -v /var/run/docker.sock://var/run/docker.sock \
    -u root \
    --restart=always \
    --name=jenkins \
    jenkins/jenkins 

-v /usr/bin/docker:/usr/bin/docker \ # 文件挂载 使用同一个客户端
-v /var/run/docker.sock://var/run/docker.sock \ # 文件挂载 使用同一个socket
-u root \ 给予Jenkins root的权限

进入容器 执行命令 看到就是成功

docker jenkins,学习,docker

5.制作镜像

5.1下载并安装docker desktop

官网地址
docker jenkins,学习,docker- 按照步骤安装即可若遇到问题 参考下面这篇文章可以解决
docker闪退处理方法

  • 验证是否安装成功docker
docker --version

出现下图即成功
docker jenkins,学习,docker

5.2 为python脚本制作镜像

5.2.1 Dockfile编写
  • 基础知识
    1.关键字 指令使用大写字母
    2.执行从上到下顺序执行
    3.# 表示注释
    4.每一个指令都会创建提交一个新的镜像层

Dockerfile :构建文件,定义了一切的步骤,源代码
Docker images:通过DockerFile构建生成的镜像,最终发布和运行的产品!
Docker 容器︰容器就是镜像运行起来提供服务器

  • 镜像命令( 当前路径 为Dockfile的路径)
FROM			# 基础镜镜像,一切从这里开始构建 一般开始以 scar
MAINTAINER		# 镜像是谁写的,姓名+邮箱Phil<1299>
RUN				# 镜像构建的时候需要运行的命令
ADD				# 添加压缩包如nginx 会自动解压 ADD 支持添加远程url和自动提取压缩格式的文件,COPY 只允许从本机中复制文件
WORKDIR			# 镜像的工作目录 很重要!!!即是工作目录,
VOLUME         	# 挂载的目录 host目录
EXPOSE          # 暴露给外界端口配置 有点像-p
CMD 			# 指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT		# 指定这个容器启动的时候要运行的命令,可以追加命令
ONBUILD			# 当构建一个被继承 DockerFile这个时候就会运行ONBUILD的指令。触发指令。
COPY			# 类似ADD ,将本地文件拷贝到镜像中 ,如果是相对路径,则是目标文件与Dockerfile的相对路径建议绝对路径
ENV 			# 构建的时候设置环境变量
  • 不要使用windows的绝对路径 若是当前路径可以使用 .替代
    docker jenkins,学习,docker
  • Dockfile示例
FROM python:3.9-slim-buster
WORKDIR /usr/local/zhaotong
COPY  . /usr/local/zhaotong
COPY requirements.txt requirements.txt
RUN pip3  install --trusted-host mirrors.aliyun.com --no-cache-dir -i http://mirrors.aliyun.com/pypi/simple  -r requirements.txt
CMD ["python", "single_api_runall.py"]
5.2.2 制作镜像

在docker(在Dockerile路径下执行)

 docker build -t philyou/zhaotong:v1 .

看到下图即制作成功
docker jenkins,学习,docker

5.2.3 推送镜像到dockerhub
  • 使用dockerlogin登录
docker login --u philyou

看到 suceeded即是成功
docker jenkins,学习,docker

  • 推送到docker hub

后面是镜像名称:标签
这是你的仓库名称philyou/study_work 推送时会推到对应的仓库 注意是公有仓库还是私有仓库

docker push philyou/zhaotong:v1

docker jenkins,学习,docker
dockerhub应该能看到
docker jenkins,学习,docker

6.服务器拉去制作好的镜像

登录dockerhub

  • 使用dockerlogin登录(笔者拉取的是私人镜像)
docker login --u philyou

docker jenkins,学习,docker
拉取镜像

docker pull philyou/study_work:v1

docker jenkins,学习,docker

7.jenkins挂载测试镜像的allure报告

7.1 创建jenkins(也是宿主机)的挂载目录

之前jenkins是通过 -v /usr/local/jenkins:/var/jenkins_home \ 挂载到宿主机的 /usr/local/jenkins目录下的
要为allure-report 创建挂载的宿主机目录 /usr/local/jenkins的allure-result

mkdir -p allure-result && chmod 777 allure-result 

docker jenkins,学习,docker

构建触发器

  • 构建后命令 把容器里生成的json和text挂载到jenkins里的工作空间里
docker run  \
	-v /usr/local/jenkins/workspace/$JOB_NAME/allure-result:/usr/local/zhaotong/report/temp_jsonreport \
	philyou/study_work:v1

/usr/local/jenkins/workspace/$JOB_NAME/allure-result的allure-result必须与7.2 中的allure的path一致
$JOB_NAME 指的是这个任务的名称
docker jenkins,学习,docker

7.2 jenkins安装allure插件

docker jenkins,学习,docker
docker jenkins,学习,docker
docker jenkins,学习,docker

  • 1

docker jenkins,学习,docker

  • 2
    docker jenkins,学习,docker

  • 3
    docker jenkins,学习,docker

7.3 使用webhook自动执行(github public仓库)

  • 添加一个webhook
    docker jenkins,学习,docker
  • 填入公网地址 + /github-webhook/ti
    docker jenkins,学习,docker

jenkins配置项目
docker jenkins,学习,docker

docker jenkins,学习,docker
配置完成后重启下Jenkins即可

参考文献

https://yeasy.gitbook.io/docker_practice/introduction/what
https://blog.csdn.net/itcast_cn/article/details/124865268
https://blog.csdn.net/weixin_45847167/article/details/121242285
https://www.bilibili.com/video/BV1ce4y1S7hm
https://blog.csdn.net/aiwangtingyun/article/details/123523669
https://www.bilibili.com/video/BV1og4y1q7M4

8 docker答疑解惑操作技巧

  • /bin/bash和/bin/sh的区别

      bash是sh的完整版,bash完全兼容sh命令,反之不行
    
  • 停止一个容器后使用使用新命令重新启动该容器,该容器之前的数据会消失吗

如果您在启动容器时使用了挂载卷或持久化存储,那么即使您停止并重新启动容器,数据仍然会保留在卷或存储中,您可以在重新启
动容器后访问它们如果您在启动容器时使用了挂载卷或持久化存储,那么即使您停止并重新启动容器,数据仍然会保留在卷或存储中,
您可以在重新启动容器后访问它们

就是挂载后的数据不会消失文章来源地址https://www.toymoban.com/news/detail-771012.html

  • 如何向一个正在运行的容器挂载本地文件
    可以先stop、rm该容器
-v /python_project/zhaotong:/var/zhaotong \
-v /usr/local/python3.9:/var/python3.9 \

到了这里,关于docker 学习及jenkins安装在docker上的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用Docker安装部署Jenkins

    本文主要记录如何通过docker安装jenkins,并且通过jenkins部署项目 前置准备 : jenkins所在宿主服务器首先安装好jdk、maven 注意:选择适合自己的JDK,并且注意安装JDK的系统 地址:https://www.oracle.com/java/technologies/downloads/#java8 1、卸载linux系统自带的JDK(建议直接用超级用户,不然卸

    2024年02月08日
    浏览(43)
  • docker环境下安装jenkins

    差点被Jenkins的插件搞麻了,又是依赖不对又是版本需要升级的,差点破口大骂了,还好忍住了,静下心来慢慢搞,终于搞通了。这里必须记录一下。 废话不多说,上来就是干,jenkins是干嘛用的,小白的话,自己去查,首先我的环境时centos7,自己在vmware建立的一套centos虚拟机

    2023年04月08日
    浏览(37)
  • Docker极速安装Jenkins

    安装 Jenkins 是一个常见的任务,使用 Docker 进行安装可以简化该过程并确保环境一致性。以下是在 Docker 中安装 Jenkins 的详细步骤: 安装 Docker : 首先,请确保您已在目标机器上安装了 Docker。根据您的操作系统,可以在 Docker 官方网站上找到非常完美的安装步骤,这里我给大家

    2024年02月14日
    浏览(38)
  • Docker-JenKins安装及配置!

    Jenkins官网:Jenkins 安装主机配置(官方): 最低: 256 MB 内存 1 GB 的驱动器空间(尽管如果将 Jenkins 作为 Docker 容器运行,则建议至少 10 GB) 小团队推荐: 4 GB+ 内存 50 GB 以上的驱动器空间 其实,还是根据微服务项目的大小和多少来定毕竟构建一个项目和构建多个项目所需要

    2023年04月08日
    浏览(31)
  • 一文搞懂jenkins安装部署(Docker)

    一、简介: 本文主要记录如何通过docker安装jenkins,并通过jenkins部署项目,最终效果:在jenkins对某个项目点击构建,jenkins就会去gitLab上拉取最新项目的最新代码,然后根据pom.xml文件,把项目打包成jar,并自动把这个最新的jar运行起来,达到一键式构建的目标。 二、操作步骤

    2023年04月25日
    浏览(34)
  • Docker-Jenkins|安装部署全流程

    什么是Jenkins ?   Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成( CI/CD)。 软件项目CI/CD是什么 ?   CI(Continuous Integration)始终指持续集成 ,CD(Continuous

    2024年02月03日
    浏览(46)
  • Docker 安装 Jenkins 并部署 Maven 项目

    在开始之前,我们需要保证系统中已经安装了Docker、JDK、Maven。 我这里使用的是 2.344 版本的 Jenkins,拉取命令如下: 需要稍微等一会,等待拉取完成。 镜像下载完成后,我们可以通过如下命令查看我们 docker 中的所有镜像。 这里可以看到我们刚才拉取的 2.344版本的 Jenkins 镜

    2024年02月13日
    浏览(48)
  • 使用docker安装Jenkins时无法pull问题Trying to pull repository docker.io/jenkins/jenkins ...manifest for dock..

    博客:docker 安装jenkins 第一步:安装Jenkins的镜像 报错 解决方案 解决方案博客:解决docker pull java或者xxx镜像报错的问题 ,结合:linux 操作 json文件 先说原理和操作: 原理就是在我们pull镜像时,用的时原有的镜像(属于国外),我们修改为国内的镜像pull,会快很多也不容易

    2024年02月08日
    浏览(75)
  • Docker安装Jenkins、附带JDK、Maven环境等

    场景: Jenkins的应用场景想必不用多说了吧,有多方便老司机都懂,废话不多说直接安装 环境: CentOS 8.x Jenkins latest 宿主机前置安装: 1、Java 2、Maven 3、Git 一、拉取镜像 1、jenkins的官方镜像  2、拉取 latest 版本镜像,(2.363版本兼容性也不错,推荐) 二、创建 Jenkins 环境配置

    2024年02月04日
    浏览(44)
  • 一、docker-compose方式安装运行Jenkins

    服务器系统:centos 7.6 以docker-compose 编排容器方式安装,当然需提前安装docker-compose环境(见百度-docker-compose环境安装) docker-compose.yml

    2024年02月15日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包