docker 镜像制作 与 CI/CD

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

目录

镜像到底是什么?

使用docker创建镜像

步骤:

1、编辑Dockerfile(Dockerfile是docker制作镜像的配方文件)

2、编辑requirements.txt文件

 3、编辑app.py文件,我们的程序文件

4、生成镜像文件

5、查看生成的镜像

6、下载启动redis镜像

7、使用生成的镜像生成容器 

8、​​​​查看实验成果 

docker 的CI与CD  

一、CI/CD的简介

1、CI(CI-Continuous integration,持续集成)

2、CD(CD-continuous deployment,持续部署)

3、持续交付(Continuous Delivery)

4、完整步骤图

5、jenkins


常见的一些docker文件和其起到的作用

resolv.conf  --》 该文件是容器里的dns服务器,他的地址使用的是宿主机里的dns的配置

它复制了宿主机的/etc/resolv.conf里的内容

hostname --》存放主机名的

hosts  --》 域名解析

config.v2.json --》存放的是docker inspect里的详细信息 

创建两个nginx容器,并使用--link链接,目的是让claylpf-nginx-2 能 使用claylpf-nginx-1容器内的软件或者是程序

#创建claylpf-nginx-1容器
[root@mysql ~]# docker run -d -p 6606:80 --name claylpf-nginx-1 nginx
22e10551d3cd59391a1430e98b409e99c21c991dbfb406a010c8c97c352bf10d

#创建claylpf-nginx-2容器,并链接到claylpf-nginx-1上去
[root@mysql ~]# docker run -d -p 6607:80 --name claylpf-nginx-2  --link claylpf-nginx-1:claylpf nginx
bd698ed57cbb5df76e42ef6a9991ec491318b5f90b1129dd3d3c4dbd5237aa68
[root@mysql ~]# 

--link 容器名字:再claylpf-nginx-2容器里的/etc/hosts添加一条

镜像到底是什么?

镜像(Image)是计算机科学中一个广泛使用的概念,指的是一种数据副本。在计算机中,一个镜像通常是指一个数据集合,其中包含了一个文件系统、软件环境以及相关的应用程序如操作系统、核心代码、系统工具、系统库等。

最常见的镜像类型是操作系统镜像,它是一个完整的操作系统及其相关软件和配置的复制品,可以通过安装或启动该镜像来轻松地为计算机系统提供同样的软件环境和功能。

此外,还有一些其他类型的镜像,如容器镜像、虚拟机镜像等。容器镜像是为Docker等容器技术准备的,包含了一个或多个应用程序及其运行所需的库和环境等。虚拟机镜像则是为虚拟化技术准备的,包含了一个完整的操作系统及其相关软件和配置。

使用镜像可以方便地创建、部署和管理软件开发、测试和生产环境。它们可以帮助开发者和管理员节省时间和精力,避免出现由于环境不一致导致的兼容性问题等。

总之,镜像是计算机中一个重要的概念,是一个数据的复制品,可用于创建、部署和管理软件环境和应用程序。它在软件开发和计算机系统管理中有着广泛的应用

使用docker创建镜像

步骤:

1、编辑Dockerfile(Dockerfile是docker制作镜像的配方文件)

[root@mysql /]# mkdir mydocker
[root@mysql /]# cd mydocker
[root@mysql mydocker]# ls
[root@mysql mydocker]# vim Dockerfile


[root@mysql mydocker]# cat Dockerfile 
FROM python:2.7-slim         #导入基础镜像,里面安装了python 2.7
WORKDIR /app                 #进入到容器后,会进入的文件夹
ADD . /app            #复制linux系统当前目录下的内容到容器的/app目录下 类似于执行docker cp
RUN pip install --trusted-host pypi.python.org -r requirements.txt    #再容器内部执行的命令
EXPOSE 80                   #容器暴露80端口,监听80端口
ENV NAME World              #定义了环境变量NAME的值为World
ENV AUTHOR clay             #定义了环境变量AUTHOR的值为World
CMD ["python","app.py"]     #容器启动的时候执行该命令 python app.py
[root@mysql mydocker]# 

其中RUN和CMD指令是在不同阶段完成的

        RUN是在制作镜像的过程中完成的

        CMD是镜像制作完成 启动容器使用镜像的时候执行的,它也是启动容器后执行的第一个命令

其中RUN后面如果要写的命令不止一条,我们可以使用&&符号衔接下一行,他的作用是可以减少文件的层数 

CMD里面接的命令,必须一直在容器里运行,在前台运行。

只要容器里的运行命令结束,容器就会退出

2、编辑requirements.txt文件

[root@mysql mydocker]# vim requirements.txt
[root@mysql mydocker]# cat requirements.txt 
Flask
Redis
[root@mysql mydocker]# 

 3、编辑app.py文件,我们的程序文件

[root@mysql mydocker]# vim app.py
[root@mysql mydocker]# cat app.py
from flask import Flask
from redis import Redis, RedisError
import os
import socket

# Connect to Redis
redis = Redis(host="redis", db=0, socket_connect_timeout=2, socket_timeout=2)

app = Flask(__name__)

@app.route("/")
def hello():
    try:
        visits = redis.incr("counter")
    except RedisError:
        visits = "<i>cannot connect to Redis, counter disabled</i>"

    html = "<h3>Hello {name}!</h3>" \
           "<b>Hostname:</b> {hostname}<br/>" \
           "<b>Visits:</b> {visits}"
    return html.format(name=os.getenv("NAME", "world"), hostname=socket.gethostname(), visits=visits)

if __name__ == "__main__":
    app.run(host='0.0.0.0', port=80)

[root@mysql mydocker]# 

4、生成镜像文件

[root@mysql mydocker]# docker build -t sc-hello_1 .

5、查看生成的镜像

docker images

docker 镜像制作 与 CI/CD

6、下载启动redis镜像

[root@centos8-docker mydocker1]# docker pull redis

7、使用生成的镜像生成容器 

[root@centos8-docker mydocker1]# docker run -d -p 6677:80 --name sc_hello_2 sc_friendlyhello_2
[root@centos8-docker mydocker1]# docker ps
#查看正在运行的容器

8、​​​​查看实验成果 

docker 镜像制作 与 CI/CD

因为redis容器没有启动,所以我们启动一个redis容器链接到现在的这个容器。

[root@centos8-docker mydocker1]# docker run -d -p 5644:6379 --name sc_redis_2 redis
#创建redis容器
[root@centos8-docker mydocker1]# [root@centos8-docker mydocker1]# docker run -d -p 5647:80 --name sc_hello_4 --link sc_redis_2:redis sc_friendlyhello_2

#创建一个容器链接到redis数据库容器

再用浏览器访问192.168.31.31:5647docker 镜像制作 与 CI/CD

docker 的CI与CD  

CI/CD  持续集成--》持续部署 --》持续交付        

一、CI/CD的简介


CI/CD是一种通过在应用开发阶段引入自动化来频繁向客户交付应用的方法。
CI/CD的核心概念是持续集成、持续交付和持续部署。

具体来说,CI/CD可让持续自动化和持续监控贯穿于应用的整个生命周期(从集成和测试阶段,到交付和部署)这些关联的事务统称为“CI/CD管道”,由开发和运维团队协同支持。

互联网软件的开发和发布,目前已经形成了一套标准流程,一般可以分为以下几个阶段:
开发——构建——集成——测试——交付——部署

docker 镜像制作 与 CI/CD

1、CI(CI-Continuous integration,持续集成)

持续集成是指多名开发者在开发不同功能代码的过程当中,可以频繁的将代码行合并到一起并切相互不影响工作。
持续集成的目的,是让产品可以快速迭代,同时还能保持高质量。它的核心措施是,代码集成到主干之前,必须通过自动化测试。只要有一个测试用例失败,就不能集成。
注:持续集成简单来说,就是频繁的将代码集成到主干。将软件个人研发的部分向软件整体部分交付,频繁进行集成以便更快地发现其中的错误。

docker 镜像制作 与 CI/CD

它的好处有以下两种:

  1. 快速发现错误。每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容易;
  2. 防止分支大幅偏离主干。如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集成。

2、CD(CD-continuous deployment,持续部署)


是基于某种工具或平台实现代码自动化的构建、测试和部署到线上环境以实现交付高质量的产品,持续部署在某种程度上代表了一个开发团队的更新迭代速率。
持续部署(continuous deployment)是持续交付的下一步,指的是代码通过评审以后,自动部署到生产环境。
持续部署的目标是,代码在任何时刻都是可部署的,可以进入生产阶段。
docker 镜像制作 与 CI/CD

注:持续部署的前提是能自动化完成测试、构建、部署等步骤。

3、持续交付(Continuous Delivery)


持续交付是在持续部署的基础之上,将产品交付到线上环境,因此持续交付是产品价值的一种交付,是产品价值的一种盈利的实现。
持续交付指的是频繁地将软件的新版本,交付给质量团队或者用户,以供评审。如果评审通过,代码就进入生产阶段。
持续交付在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境的「类生产环境」(production-like environments)中。持续交付优先于整个产品生命周期的软件部署,建立在高水平自动化持续集成之上
注:持续交付可以看作持续集成的下一步

4、完整步骤图

docker 镜像制作 与 CI/CD

5、jenkins

很多公司都会使用jenkins 而它是CI/CD 持续集成/持续交付的杰出的软件

官方网站:Jenkins文章来源地址https://www.toymoban.com/news/detail-500311.html

到了这里,关于docker 镜像制作 与 CI/CD的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 分别使用Alpine、Docker制作jdk镜像

    目录 制作 jdk 1.0 镜像  ——Docker 1.创建文件夹上传jdk的安装包,和在同级目录下编写Dockerfile文件 2.编写 Dockerfile 文件 3.执行Dockerfile文件,初次依赖镜像的时候会下载相应镜像 优化制作jdk镜像(缩小内存大小)——使用alpine 1、下载alpine镜像 2、创建并编辑Dockerfile 4、执行doc

    2024年02月04日
    浏览(59)
  • Docker容器化技术(使用Dockerfile制作镜像)

    Docker 支持通过扩展现有镜像,创建新的镜像。实际上,Docker Hub 中 99% 的镜像都是通过在 base 镜像中安装和配置需要的软件构建出来的。 1、Docker 镜像为什么分层 镜像分层最大的一个好处就是共享资源。 比如说有多个镜像都从相同的 base 镜像构建而来,那么 Docker Host 只需在

    2024年03月19日
    浏览(146)
  • Docker 制作 MySQL 镜像并使用 `/docker-entrypoint-initdb.d/` 机制初始化数据

    制作一个 MySQL Docker 镜像并初始化数据库信息 win 11 Docker-Desktop 4.14.0 (91374) 启动一个MySQL容器很容易。如何初始化数据呢? 大概我们会尝试很多操作,比如百度常见到 使用 CMD 命令调用shell脚本,通过shell脚本处理初始化数据等等,经过实践,这些都不太方便。 其实,MySQL 官方提

    2024年01月18日
    浏览(143)
  • 【超全面】Docker使用:基本安装 + 常用命令 + 安装mysql、redis、clickhouse + 使用数据卷安装 + 制作镜像

    Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。 容器是完全使用沙箱机制,相互之间不会有任何接口(类似

    2024年02月01日
    浏览(69)
  • linux centos安装google chrome浏览器使用headless无头模式 制作docker镜像

    chromedriver 驱动下载地址: https://npm.taobao.org/mirrors/chromedriver/ linux centos安装google chrome浏览器使用headless无头模式 用java开发爬虫,或者需要java操作控制浏览器来渲染页面,抓取页面元素,都需要在linux安装google chrome浏览器,然后就可以通过chrome driver来连接操作chrome浏览器了,

    2024年02月09日
    浏览(75)
  • Servlet路径问题(“/“到底代表什么)-“web应用程序的根目录“与“web站点的根目录“

    JavaWeb——Servlet路径问题(\\\"/\\\"到底代表什么) 在JavaWeb中,使用路径时出现了大量的\\\"/“,而每次使用”“时都感觉其代表的含义是不同的,因此,本篇文章将汇总JavaWeb中的”\\\"出现情况及其所代表的含义。 了解这些\\\"/\\\"含义之前,先来了解绝对路径与相对路径的概念。 提前说一下

    2023年04月25日
    浏览(40)
  • Docker从认识到实践再到底层原理(四-2)|Docker镜像仓库实战案例

    那么这里博主先安利一些干货满满的专栏了! 首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助。 高质量博客汇总 然后就是博主最近最花时间的一个专栏《Docker从认识到实践再到底层原理》希望大家多多关

    2024年02月07日
    浏览(49)
  • 【CI/CD技术专题】「Docker实战系列」本地进行生成镜像以及标签Tag推送到DockerHub

    背景介绍 Docker镜像构建成功后,只要有docker环境就可以使用,但必须将镜像推送到Docker Hub上去。创建的镜像最好要符合Docker Hub的tag要求,因为在Docker Hub注册的用户名是liboware,最后利用docker push命令推送镜像到公共仓库。 前提概要 你需要在Docker hub注册用户:到官网注册账

    2024年02月10日
    浏览(60)
  • windows10/11 修改docker镜像存储目录

    windows10/11 修改docker镜像存储目录 docker默认pull的镜像在c盘,随着镜像的增加,C 盘很快就满了,直接影响不少程序的正常使用,使用下面的操作可以将镜像路径移动到其他位置 查看docker的状态 确保docker为关闭状态,如果state下为running时,直接退出docker 关闭所有正在运行的实例

    2024年02月13日
    浏览(47)
  • 【Docker】Docker最近这么火,它到底是什么

    前言 Docker 是一个 开源的应用容器引擎 ,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux或Windows 操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。 📕作者简介: 热爱跑步的恒川 ,致力于

    2024年02月06日
    浏览(42)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包