云原生部署_Docker入门

Docker是啥

        Docker是一个开源的容器化平台,可以帮助开发者将应用程序其依赖的环境打包成一个可移植、可部署的容器。

        Docker的主要目标是通过容器化技术,实现应用程序的快速部署、可移植性和可扩展性,从而简化应用程序的开发、测试和部署过程。

Docker与传统虚拟机的区别

        虚拟机是一个主机模拟出多个主机(多个虚拟机),需要先拥有独立的系统。传统虚拟机,利用hypervisor,模拟出独立的硬件和系统,在此之上创建应用。(与主机而言,是同等地位)

        docker 是在主机系统中建立多个应用及配套环境,把应用及配套环境独立打包成一个单位,是进程级的隔离。(于主机而言是个运行的进程)

Docker相对虚拟机的优势:

  • 轻量级: 容器与宿主机共享操作系统内核,因此容器本身非常轻量级,启动和停止速度快,资源占用少。
  • 可移植性: 容器可以在任何支持相应容器运行时的系统上运行,无需关注底层操作系统的差异,提供了高度的可移植性。
  • 快速部署: 容器化应用程序可以通过简单的操作进行打包、分发和部署,减少了部署过程的复杂性和时间成本。
  • 弹性扩展: 可以根据应用程序的需求快速创建、启动和停止容器实例,实现应用程序的弹性扩展和负载均衡。
  • 环境隔离: 每个容器都具有独立的运行环境,容器之间相互隔离,不会相互干扰,提供了更好的安全性和稳定性。

Docker与Maven 类比

Docker Registry:可分为 公有Docker Registry 和 私有Docker Registry。 最常⽤的Docker Registry莫过于官方的 Docker Hub, 这也是默认的Docker Registry. 

Docker架构

Docker Registry:可分为 公有Docker Registry 和 私有Docker Registry。 最常⽤的Docker Registry莫过于官方的 Docker Hub, 这也是默认的Docker Registry. 

Images( Docker镜像):Docker镜像是一个只读模板,它包含创建 Docker容器的说明。

Container(容器):容器是镜像的可运行实例。镜像和容器的关系有点类似于面向对象中,类和对象的关系。

Client(客户端):Docker客户端是 Docker的用户界面,它可以接受用户命令和配置标识。

Docker命令

Docker安装

        Docker 是一个开源的商业产品,有两个版本:社区版(Community Edition,缩写为 CE)和企业版(Enterprise Edition,缩写为 EE)

  • 安装:

        yum install -y docker-ce-3:24.0.2-1.el7.x86_64 # 这是指定版本安装

  • 启动并加入开机启动:

        systemctl start docker && systemctl enable docker

  • 验证是否安装成功/docker版本查看

        docker version

镜像相关命令

  • 搜索镜像

        docker search java : 在Docker Hub中搜索含有 java这个关键词的镜像仓库

  • 下载镜像

        docker pull java:8 // 下载最新版本的 Java镜像,如果要下载指定版本则在java后面加冒号指定版本

  • 列出下载镜像

        docker images

  • 删除镜像

        docker rmi java   // 强制删除加 -f

容器相关命令

1、新建并启动容器

docker run -d -p 91:80 nginx

docker run命令即可新建并启动一个容器,该命令是最常用的命令,它有很多选项,下面将列举一些常用的选项。

docker run命令创建容器时,会先检查本地是否存在指定镜像。如果本地不存在该名称的镜像, Docker就会自动从 Docker Hub下载镜像并启动一个 Docker容器。

-d选项:表示后台运行

-P选项:随机端口映射

-p选项:指定端口映射,有以下四种格式。

-- ip:hostPort:containerPort

-- ip::containerPort

-- hostPort:containerPort

-- containerPort

--net选项:指定网络模式,该选项有以下可选参数:

--net=bridge:默认选项,表示连接到默认的网桥。

--net=host:容器使用宿主机的网络。--net=container:NAME-or-ID:告诉 Docker让新建的容器使用已有容器的网络配置。

--net=none:不配置该容器的网络,用户可自定义网络配置。

2、列出运行中的容器

docker ps

3、停止容器

docker stop f0b1c8ab3633 -- 容器id

4、强制停止容器

docker kill f0b1c8ab3633

5、启动已经停止的容器

docker start f0b1c8ab3633  

6、查看容器所有信息

docker inspect f0b1c8ab3633

7、查看容器日志

docker container logs f0b1c8ab3633

8、查看容器里的进程

docker top f0b1c8ab3633

9、容器与宿主机相互复制文件

docker cp 容器id:要拷贝的文件在容器里面的路径 宿主机的相应路径

如:docker cp 7aa5dc458f9d:/etc/nginx/nginx.conf /mydata/nginx

docker cp 要拷贝的宿主机文件路径 容器id:要拷贝到容器里面对应的路径

10、进入正在运行的容器

docker exec -it f0b1c8ab3633 /bin/bash (有的容器需要把 /bin/bash 换成 sh)

// 如果docker run命令运行容器的时候,没有使用-it参数,就要用这个命令进入容器。一旦进入了容器,就可以在容器的 Shell 执行命令了

11、删除容器

docker rm f0b1c8ab3633 // 该命令只能删除已停止的容器,如需删除正在运行的容器,可使用-f参数

Dockerfile构建Docker镜像

Dockerfile是一个文本文件,其中包含了若干条指令,指令描述了构建镜像的细节。

在Dockerfile所在路径执行以下命令构建镜像:docker build -t nginx:tuling .

其中,-t指定镜像名字,命令最后的点(.)表示Dockerfile文件所在路径

使用Dockerfile构建微服务镜像

以项目tulingmall-member为例,将该微服务的可运行jar包构建成docker镜像

1、将jar包上传linux服务器/root/tulingmall/tulingmall-member目录,在jar包所在目录创建名为Dockerfile的文件。

2、在Dockerfile中添加以下内容

# 基于哪个镜像

From java:8

# 复制文件到容器

ADD tulingmall-member-0.0.5.jar  /tulingmall-member-0.0.5.jar

# 声明需要暴露的端口

EXPOSE 8877

# 配置容器启动后执行的命令

ENTRYPOINT java ${JAVA_OPTS} -jar /tulingmall-member-0.0.5.jar

3、使用docker build命令构建镜像

docker build -t tulingmall-member:0.0.5 .

4、启动镜像,加-d可在后台启动

docker run -d -p 8877:8877 tulingmall-member:0.0.5

加上JVM参数启动:

# --cap-add=SYS_PTRACE  这个参数是让docker能支持在容器里能执行jdk自带类似jinfo,jmap这些命令,如果不需要在容器里执行这些命令可以不加

docker run -d -p 8877:8877 \

-e SPRING_CLOUD_NACOS_CONFIG_SERVER_ADDR=192.168.65.174:8848 \

-e JAVA_OPTS='-Xmx1g -Xms1g -XX:MaxMetaspaceSize=512m' \

--cap-add=SYS_PTRACE \

tulingmall-member:0.0.5

5、访问会员服务接口

服务部署完成,即可以访问了。

将微服务镜像发布到阿里云远程镜像仓库

将微服务镜像发布到私有镜像仓库

1. 搭建私有docker镜像仓库

2.上传镜像到私有仓库

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/96116.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/96116.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【大数据专栏】大数据框架-Apache Druid Overview

目录 Architecture Advantages and disadvantages 从架构以及设计可以得出结论,Durid不支持ACID事务,基于时间戳列和维度列去查询,所以适合基于时间做分组和学列的查询操作。 Advantages优势: 实时数据摄取与查询 支持秒级数据摄…

云平台面试内容(一)

1. 云计算的优点、服务模型区别及云部署模式 云计算优点: 云计算具有显著的优势,包括无需自建机房和硬件投入,资源即开即用并支持弹性伸缩,按需付费使成本透明可控。企业可以在数分钟内完成全球范围的部署,缩短上线周期。同时云平台提供高可用性和安全性,多副本容灾保证数…

嵌入式 - 硬件:51单片机(2)

本节重点:1. GPIO输入模式、输出模式2. 按键工作原理(GPIO输入)3. 中断概念4. 中断源概念、中断源个数、哪几个中断源5. 外部中断、定时器中断概念6. 中断处理流程:7. 51单片机中定时器的个数?类型8. 16位定时器和8位…

C语言中奇技淫巧07-使用GCC栈保护选项检测程序栈溢出

-fstack-protector 是 GCC 和 Clang 编译器提供的一种栈保护(Stack Smashing Protection, SSP) 机制,用于检测和防御常见的缓冲区溢出攻击(特别是栈溢出)。它通过在函数的栈帧中插入特殊的“金丝雀值”(can…

.NET 8.0 Web API JWT 身份验证和基于角色的授权

在当今的数字环境中,保护 Web 应用程序的安全至关重要。随着 .NET 8.0 的不断发展,它提供了强大的工具来确保您的 API 既安全又高效。 示例代码:https://download.csdn.net/download/hefeng_aspnet/91490262 如果您喜欢此文章&#xff0c…

ZYNQ SDK软件在线调试

1、然后右键项目->debug as->launch on hardware2、从左到右分别是:运行程序到设置的断点暂停运行终止断开连接步进(进入函数内部)跳过(不进入函数内部)跳出函数3、双击添加断点,然后点击运行可以让程…

四大金刚之计算机操作系统

1. 进程和线程的区别?创建线程的代价比创建进程小吗?进程是资源分配和调度的基本单位;线程是 CPU 调度的基本单位。进程有独立的地址空间,线程共享进程地址空间。创建/销毁进程开销大,线程开销小。是的,因为…

redis--redis.conf的相关配置问题

关于redis.conf内的相关重要的配置介绍 1. bind 配置 仅仅设置bind,还需要搭配下面的rotected-mode 配置才能外部ip进行连接 功能:设置 Redis 监听的 IP 地址,决定哪些设备可以连接到 Redis 服务器。 bind 127.0.0.1:只允许本机&a…

unsloth 笔记:从最近的检查点继续微调

检查点(checkpointing)可以把微调进度保存下来,这样可以中途暂停,随后继续训练。首先需要在 Trainer 的参数里添加 save_strategy 和 save_steps。trainer SFTTrainer(....args TrainingArguments(....output_dir "output…

DevOps平台选型指南:破解研发效率瓶颈,适配金融/政务/国产化场景的5大关键指标

在数字化转型的浪潮中,软件研发效能已成为企业的核心竞争力。然而,许多团队在追求敏捷与高速交付的过程中,常常会遇到工具链割裂、流程冗长、环境混乱等效率瓶颈。选择一个合适的、一体化的DevOps平台,是破解这些瓶颈、实现研发运…

【面试向】元宇宙介绍

属于基础知识介绍,主要目的是对这一概念有技术层面的理解,有前瞻性的观点,帮助大家在面试中给出得体的表述。 1. 什么是元宇宙? 元宇宙本质上是一个融合了数字与现实、由技术构建的 “沉浸式虚拟空间”,是一个 “超越…

FreeMarker快速入门指南

FreeMarker快速入门指南 FreeMarker是一个基于模板和数据模型生成文本输出的Java库。它广泛应用于Web开发、代码生成、邮件模板等场景。本文将带你快速上手FreeMarker的核心概念和基本用法。 什么是FreeMarker FreeMarker是一个模板引擎,它将模板文件(.f…

Nginx主配置文件

一,Nginx基本介绍1,nginx概念Nginx 是一款轻量级、高性能的服务器软件,核心能力是 “处理网络请求”,被广泛用于网站、App 的后端架构中。Nginx 就像一个 “高效的网络交通指挥官”,核心价值是用最少的资源&#xff0c…

基于ResNet50的智能垃圾分类系统

基于ResNet50的智能垃圾分类系统:从理论到实践的完整指南 源码获取https://mbd.pub/o/bread/YZWXlZ1yZg 引言:智能垃圾分类的时代背景与意义 随着城市化进程的加速和人口数量的增长,垃圾处理问题日益成为全球性的环境挑战。传统的垃圾分类…

灾难性遗忘:神经网络持续学习的核心挑战与解决方案

本文由「大千AI助手」原创发布,专注用真话讲AI,回归技术本质。拒绝神话或妖魔化。搜索「大千AI助手」关注我,一起撕掉过度包装,学习真实的AI技术! 1. 灾难性遗忘的定义与核心问题 灾难性遗忘(Catastrophic…

OPENPPP2 —— IP标准校验和算法深度剖析:从原理到SSE2优化实现

🔍 OPENPPP2 —— IP标准校验和算法深度剖析:从原理到SSE2优化实现 引用: IP校验和算法:从网络协议到SIMD深度优化IP校验和算法:从标量到SIMD的高级优化(SSE4.1) GDB online Debugger C17 Co…

4.4 机器学习 - 集成学习

集成学习通过 “组合多个基础模型” 提升泛化能力,核心分为并行集成(Bagging)、串行集成(Boosting) 和多层集成(Stacking) 三大范式,分别对应 “降方差”“降偏差”“兼顾偏差与方差…

机器学习 - 使用 ID3 算法从原理到实际举例理解决策树

一、什么是决策树1.基本概念决策树是一种树形结构,由结点(node) 和有向边(directed edge) 组成。其中结点分为两类:内部结点(internal node):表示一个属性(特…

【期末复习】嵌入式——S5PV210开发板

本文为嵌入式课程期末复习,仅供参考,所用课本:嵌入式Linux操作系统(李建祥著)。第一章1.1 简述嵌入式微处理器数据存储格式的大,小端模式。大端模式是指数据的高字节保存在内存的低地址中,而数据…

word文档结尾批量插入图片 docx批量插入图片 指定几张

如果你有一些word文档。比如工作总结。你想每一个文档里面都插入几张图片。插入到每个文档的结尾,那么你可以使用这个工具。首先准备好你的文档。然后把它们拖进右边的方框中。拖动的时候,拖动第一个,然后准备好你的图片。把你的图片全部拖动…