Docker工作流

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

Docker工作流,k8s,docker,容器,运维

1.工作流

  1. 开发应用
  2. 编写Dockerfile
  3. 构建Docker镜像
  4. 运行Docker容器
  5. 测试应用
  6. 发布镜像到Hub
  7. 迭代更新镜像

2.开发应用

首先你需要创建一个应用,这个应用可以是后端应用或者前端应用,任何语言都可以。
比如:我使用IDEA 创建一个Java后端应用,基于Maven构建,工程结构如下:

Docker工作流,k8s,docker,容器,运维

3.编写Dockerfile

基于自己的工程来编写Dockerfile, 比如:我的是工程是基于JDK11的Java应用,并且应用打包为Jar包,我编写了一个两阶段的Dockerfile,第一个阶段为mvn构建,第二个阶段基于maven的jar包打包为docker镜像,Dockerfile文件内容如下:

# maven打包时基础镜像为maven
FROM maven:3.6-jdk-11 as build
# 工作目录,容器运行时默认在/app目录下
WORKDIR /app
# 将maven构建拷贝
COPY . .
# 执行mvn打包
RUN mvn clean package

# 基础镜像(运行时)
FROM openjdk:11
# 设置时区为东八区
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' >/etc/timezone

# 设置工作目录
WORKDIR /app

# 从build阶段拷贝jar包
COPY --from=build /app/target/sales-product.jar /app/sales-product.jar

# 设置容器启动时的命令
CMD java -jar -Xms128M -Xmx256M /app/sales-product.jar

COPY

4.构建Docker镜像

我们需要将Dockerfile定义的步骤进行docker构建打包为docker镜像,打包镜像时我们需要使用Docker CLI或者一个构建工具(Docker Compose)或者CI/CD系统来基于Dockerfile构建Docker镜像。

打包出来的Docker镜像包括了应用代码,运行时环境和任何依赖的库或者模块。Docker构建命令如下(以Docker CLI为例):

docker build . -t sales-order:latest
# or
docker build . -t sales-order
# or
docker build . -t saels-order:v1.0.0

COPY

5.运行Docker容器

一旦你的Docker镜像打包完成,那么就可以基于这个Docker镜像创建并运行Docker容器。
Docker容器是Docker镜像的实例,关系就像是程序和进程一样,Docker镜像是一个静态的程序,当基于这个镜像运行时就称为容器。
你可以将容器运行到不同的环境中,比如:开发环境,测试环境和生产环境,这些环境都可以使用同一个镜像。
运行容器有多种方式,Docker CLI, docker-compose, docker-swarm, K8s或者其他Docker容器编排平台。我们这里以Docker CLI和Docker-Compose为例来演示如何启动容器:
Docker CLI方式:

docker container run -d -p 8080:8080 sales-order

COPY

Docker-Compose方式(需要安装Docker-compose):

version: '3.7'
services:
  sales-product:
    container_name: sales-product
    restart: always
    image: sales-product:latest
    ports:
      - "60004:60004"
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /etc/timezone:/etc/timezone:ro
    logging:
      driver: "json-file"
      options:
        max-size: "512m"
    extra_hosts: 
      - "sales-order:192.168.1.83"
    environment:
      - SPRING_PROFILES_ACTIVE=dev
    command: ['java','-jar','-Xms256M','-Xmx256M','sales-product.jar']  

COPY

6.测试应用

一般Docker容器成功启动后,我们就可以开始测试我们的应用了

7.发布镜像到Hub

Docker镜像一般需要发布到一个Registry以达到镜像共享的目的,这些Registry像Docker Hub或者私有Registry。一般开源或开放的项目会选择将镜像发布到Docker Hub或者将自己的Registry部分开放以共享镜像;而私有业务镜像通常只发布到私有Registry。将镜像推送到Registry我们通常使用Docker CLI或者其他客户端工具进行推送,我们以Docker CLI为例:

docker push sales-order:latest

docker push your_private_registry_domain/sales-order:latest

COPY

迭代更新镜像

在该应用软件生命周期结束前,我们一般都会一直维护应用,不断发布新版本应用,同时我们的镜像也在不断地根据应用版本的更新而更新,这样就很方面的帮助你解决新版本应用发布的问题。文章来源地址https://www.toymoban.com/news/detail-861703.html

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

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

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

相关文章

  • 容器技术之Docker&K8S

    区别:1、k8s是一种开放源码的容器集群管理系统,而Docker是一种开放源码的应用容器引擎;2、k8s是一套自动化部署工具,可以管理docker容器是容器编排层面的,docker是容器化技术,是容器层面的。 Docker本身并不是容器,它是创建容器的工具,是应用容器引擎。一句话总结就

    2024年02月08日
    浏览(17)
  • docker在k8s容器中的作用,以及docker的底层原理,以及k8s的常用命令

        Docker的设计思想就是创建软件程序可移植性的轻量级容器,让其可以在任何安装了Docker的机器上,不用关心底层操作系统,就可以运行开发程序,就像集装箱一样使用。 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。 Docker 可以让开发者打包他们

    2024年04月27日
    浏览(14)
  • 容器技术,1. Docker,2. Kubernetes(K8s):

    目录 容器技术 1. Docker: 2. Kubernetes(K8s): Docker和Kubernetes 容器的主要应用场景有哪些? 有效的将单个操作系统的资源划分到孤立的组中,以便更好的在孤立的组之间平衡有冲突的资源使用需求,这种技术就是容器技术。 容器技术指通过在物理主机操作系统上创建一个一个

    2024年02月11日
    浏览(15)
  • 容器化(Docker、K8S)部署Elasticsearch + Kibana

    ElasticSearch简介 本次实验目标 实验环境 Docker部署Elasticsearch + Kibana 安装中文分词器插件,配置认证 基本操作 在华为云CCE中部署 使用Logstash进行数据迁移

    2024年01月19日
    浏览(20)
  • 容器的崛起——Docker与K8s的相爱相杀

    对于K8s启用docker,作为普通开发者的体感是,k8s不就是docker的集群操作吗?k8s弃用docker就像鱼反对水一样不可思议,那么这两个技术究竟是什么关系,Kubernetes 是如何一步步与 Docker 解耦的,请看下文。 向应用代码隐藏分布式架构复杂度、让分布式架构得以成为一种能够普遍

    2023年04月08日
    浏览(12)
  • K8S容器运行时从Docker切换为Containerd

    K8S从1.24版本起不再支持docker容器引擎,可选的替代品有 containerd 、 cri-o 、 podman 。下面演示将单个node节点的容器引擎从docker切换为containerd的过程。 检查是否已经加载内核模块 overlay 和 br_netfilter 。 如果没有,手动加载内核模块: 检查系统内核参数: 如果没有开启,手动调

    2024年02月09日
    浏览(27)
  • K8S系列文章 之 容器网络基础 Docker0

    使用 ip addr 命令看一下网卡: 其中lo是本地回环地址,docker0就是docker0地址,也就是docker的地址172.17.0.1。 docker使用的是桥接模式,使用的技术是evth-pair技术,后面会解释。 比如有两个容器,容器A要去访问容器B,该如何访问?使用127.0.0.1吗?还是写docker0地址? 我们运行起一

    2024年02月14日
    浏览(15)
  • ​k8s 1.24 1.25 集群使用docker作为容器

    背景 在新版本Kubernetes环境(1.24以及以上版本)下官方不在支持docker作为容器运行时了,若要继续使用docker 需要对docker进行配置一番。需要安装cri-docker作为Kubernetes容器 查看当前容器运行时 安装docker 安装cri-docker 为kubelet配置容器运行时 关于 https://www.oiox.cn/ https://www.oiox.cn

    2024年02月12日
    浏览(24)
  • 【容器架构】你知道有 Docker 为什么还要 K8s 吗?

    👉 博主介绍 : 博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家,WEB架构师,阿里云专家博主,华为云云享专家,51CTO TOP红人 Java知识图谱点击链接: 体系化学习Java(Java面试专题) 💕💕 感兴趣的同学可以收藏关注下 , 不然下次找不到哟

    2024年02月16日
    浏览(31)
  • kubernetes(k8s)大白学习02:容器和docker基础、使用、架构学习

    简单说:容器(container)就是计算机上的一个沙盒进程,它与计算机上的所有其它进程相隔离。 这种隔离是怎么做到的呢?它利用了内核提供的 namespace 和 cgroup 这 2 种技术。这些技术能力在 Linux 中已经存在了很长时间。而 Docker 或容器技术致力于将这些功能更易于使用和更

    2024年02月07日
    浏览(14)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包