当前位置: 首页 > news >正文

【后端】Docker一本通

长期更新补充,建议关注收藏点赞


目录

  • Docker概述
  • 安装部署Docker
  • 基本操作
  • 使用docker部署tomcat
  • 使用docker部署mysql

Docker概述

  • docker是⼀个应⽤级隔离的虚拟化技术
  • docker三大核心概念
    镜像:是具有源的所有特征的⼀个标记⽂件
    仓库:存放镜像⽂件的⽬录
    容器:docker驱动根据镜像⽂件恢复出来⼀个具体环境
  • docker与虚拟机区别
  1. 安装虚拟机软件如:VMware,在此虚拟机软件上安装操作系统(下载),把操作系统的虚拟机文件备份,随时复制并启动该操作系统。
  2. 在Linux上安装Docker软件,从镜像仓库拉取(Pull)操作系统或应用环境,基于该镜像文件创建一个容器(运行环境),备份容器以供下次使用(直接export容器,将容器提交(Commit)为本地镜像)。
  3. 虚拟机环境直接完全模拟一套全新的硬件环境,Docker环境不虚拟硬件,直接使用宿主机资源(Docker默认下不限制CPU,内存资源),也可以直接指定分配某个容器的CPU或内存资源。
  4. 虚拟机可以直接与宿主机或局域网连接,分配IP地址(Brige桥接方式,NAT方式),Docker容器无法获取IP地址(跟随于宿主机的IP地址)。
  5. 镜像相当于是容器的模板,通过镜像创建容器,容器修改后也可提交为镜像,删除容器并不会删除镜像,删除镜像则无法创建容器。
  • 容器使用注意事项:
  1. 尽量让一个容器做一件事情,或启动一个服务。
  2. 尽量使用挂载的方式将数据文件挂载到容器中,容器里面尽量不要保存数据。
  3. 尽量让容器按照Docker化的要求来使用容器,而不是安装一个虚拟机。
  4. 尽量不使用交互模式来直接操作容器,而是在宿主机上执行命令,或者使用Docker File。
  5. 只要能解决问题,高效地解决问题,无论怎么用,都行。

安装部署Docker

  • 安装docker
  1. 安装网络相关命令:yum install net-tools
  2. 安装实用工具:yum install -y yum-utils device-mapper-persistent-data lvm2
  3. 添加yum镜像:yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  4. 更新yum缓存:yum makecache fast
  5. 安装docker-ce:yum -y install docker-ce
  6. 启动docker服务:systemctl start docker, 对应的还有stop, restart等
  7. 查看docker信息:docker info
  8. 查找centos可用镜像:docker search centos
  9. 镜像仓库地址:https://hub.docker.com https://hub.daocloud.io
  10. 注意事项:建议在CentOS 7版本上安装Docker,确保有足够的硬盘空间,确保内存和CPU资源足够。
  11. 查看Docker服务,systemctl list-unit-files | grep docker, 如果显示disabled, 说明Docker服务不会随操作系统的启动而自动启动。systemctl enable docker docker随系统自启动
    12.Docker命令及参数使用大全:https://www.w3cschool.cn/docker/docker-command-manual.html

基本操作

  1. 搜索镜像:docker search hello-world
  2. 拉取镜像:docker pull hello-world,默认情况下,会拉取最新版本镜像(latest),如果需要拉取指定版本,则必须指定TAG标签。
  3. 创建运行容器:docker run hello-world == docker create+ docker start
  4. 查看镜像:docker images
  5. 创建容器:docker create hello-world:latest docker create --name hello-docker hello-world
    –name 自定义容器名
    -p : 映射端口号,宿主机端口:容器端口
    -d :将进程置于后台执行
    -it:前台运⾏交互模式
    -v :挂载外部⽬录, 语法: -v 主机⽬录:容器⽬录
    -e : 设置环境变量, 语法: -e 变量名=值
  6. 查看容器:docker ps 查看运行的容器, docker container ls -a 查看所有的容器
  7. 启停容器:docker start/stop/restart hello-world(容器名)
  8. 查看容器⽇志的命令: docker logs 容器名
  9. 删除容器:docker rm 容器名 (可通过container ls -a查看)
  10. 删除镜像:docker rmi hello-world
  11. 使用交互模式进入容器:docker exec -it tomcat-8.0 bash
    -i : 使用交互模式 -t:指定一个终端
    bash 解释命令所⽤的解释器
    推出容器:exit
  12. 在宿主机上直接操作容器:dcoker exec -t mysql-5.6 ip a
    这条命令是在 执行容器内的命令,并且是一次性运行的,不需要额外分步执行。
    它会直接在容器内运行 ip a 命令,并输出容器内的网络接口信息。没有必要手动进入容器后再执行 ip a,因为 docker exec 会自动为你在容器中执行该命令。
    如果你希望进入容器并交互式执行多个命令,你可以使用 docker exec -it mysql-5.6 bash 进入容器的终端,然后手动执行 ip a 或其他命令。
  13. 把容器导出到本地保存
    docker export -o test.tar 容器名
  14. 将本地的容器文件上传到docker服务作为镜像,存放在镜像仓库中
    docker import test.tar 镜像名:TAG
    :TAG 是 镜像的标签,用来指定该镜像的版本或标识符。
    TAG:是镜像的版本标签,通常用于标识镜像的不同版本。例如,latest、v1.0 或任何你自己设定的标签。如果没有指定 TAG,默认的标签是 latest。
  15. 在宿主机和容器之间拷⻉⽂件
    docker cp 宿主机的路径 容器名:容器中的⽬标路径
    如果要从容器⾥⾯拷⻉⽂件出来,交换路径的位置
    注意事项:容器的路径需要带上容器名
    拷⻉⽬录的时候,不需要加 -r这类的参数
  16. 直接将容器上传作为本地镜像文件
    docker commit 容器名 镜像名:TAG
    docker commit -p -a "作者名字" -m"描述" 容器编号 镜像名:版本号
    例如:docker commit -p -a “lency” -m"my_rabbit" e28f77161d0d my_rabbit:v1
    把容器提交为镜像,便于传递
    注意:执⾏命令前,停⽌相应的容器
  17. 导出镜像,将镜像文件保存到本地存储
    docker save -o test.tar 镜像名:TAG
  18. 导入镜像,将本地镜像文件上传到docker服务镜像中,镜像仓库中
    docker load --input test.tar

使用docker部署tomcat

  1. 先到国内镜像市场去搜索对应的tomcat镜像版本
  2. 拉取镜像:
    在这里插入图片描述
    docker pull 复制拉取的命令
  3. 查看拉取镜像
    docker images
    在这里插入图片描述
  4. 创建并启动容器
    docker run --name 容器名 -p 宿主机端口:容器端口 -d 镜像名:标签
    如:docker run --name tomcat-8.0 -p 8081:8080 -d 镜像名:tag
    –name :指定容器名
    -p : 映射端口号,宿主机端口:容器端口
    -d :将进程置于后台执行
    -it:前台运⾏交互模式
    -v :挂载外部⽬录, 语法: -v 主机⽬录:容器⽬录
    -e : 设置环境变量, 语法: -e 变量名=值
  5. 查看Tomcat容器是否启动
    输入:docker ps
    在这里插入图片描述
    -a :如果不加-a,只能看到运⾏成功容器,加了-a可以到所有的容器
  6. 在浏览器输入宿主机IP+映射端口,访问验证
    如果不能访问,则查看防火墙状态,关闭防火墙再次确认
    在这里插入图片描述
    打开浏览器,输入:宿主机IP:宿主机映射端口,按回车确认能否打开tomcat首页
    在这里插入图片描述

使用docker部署mysql

1.到镜像市场搜索mysql指定版本的镜像(5.6)

2.拉取镜像
使用:docker pull 镜像拉取文件
在这里插入图片描述

3.创建并启动容器
docker run --name 容器名 -p 宿主机端口:容器端口 -e MYSQL_ROOT_PASSWORD=密码 -d 镜像名:标签
如:docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d daocloud.io/mysql:tag
注:如果端口冲突,怎么解决?
查看端口是否冲突:netstat -tunlp[-anp]| grep 端口
在这里插入图片描述
解决办法:
1.kill -9 进程ID 杀死进程
2.主动关闭该服务 systemctl stop 服务名
3.在映射端口的时候避免跟该端口重复

相关文章:

【后端】Docker一本通

长期更新补充,建议关注收藏点赞 目录 Docker概述安装部署Docker基本操作使用docker部署tomcat使用docker部署mysql Docker概述 docker是⼀个应⽤级隔离的虚拟化技术docker三大核心概念 镜像:是具有源的所有特征的⼀个标记⽂件 仓库:存放镜像…...

工程化与框架系列(13)--虚拟DOM实现

虚拟DOM实现 🌳 虚拟DOM(Virtual DOM)是现代前端框架的核心技术之一,它通过在内存中维护UI的虚拟表示来提高渲染性能。本文将深入探讨虚拟DOM的实现原理和关键技术。 虚拟DOM概述 🌟 💡 小知识&#xff1…...

数据结构之各类排序算法代码及其详解

1. 排序的概念 排序是一种常见的算法概念,用于将一组数据按照特定的顺序进行排列。排序算法的目的是将一组数据按照递增或递减的顺序重新排列。常见的排序算法包括冒泡排序、插入排序、选择排序、快速排序、归并排序等。排序算法的选择通常取决于数据规模、数据分布…...

【洛谷贪心算法】P1090合并果子

为了使消耗的体力最小,每次都应该选择当前重量最小的两堆果子进行合并。可以使用优先队列(小根堆)来实现这个过程,优先队列可以自动维护元素的顺序,每次取出堆顶的两个元素(即最小的两个元素)进…...

【告别双日期面板!一招实现el-date-picker智能联动日期选择】

告别双日期面板!一招实现el-date-picker智能联动日期选择 1.需求背景2.DateTimePicker 现状图3.日期选择器实现代码4.日期选择器实现效果图5.日期时间选择器实现代码6.日期时间选择器实现效果图 1.需求背景 在用户使用时间查询时,我们经常需要按月份筛选…...

现今大语言模型性能(准确率)比较

现今大语言模型性能(准确率)比较 表头信息:表的标题为“大语言模型性能比较结果”(英文:Table 1: Large Language Model Performance Comparison Results),表明该表是用于对比不同大语言模型的性能。列信息: 模型:列出参与比较的不同大语言模型名称,包括LLAMA3(70B)…...

程序诗篇里的灵动笔触:指针绘就数据的梦幻蓝图(水文,勿三)

大家好啊,我是小象٩(๑ω๑)۶ 我的博客:Xiao Xiangζั͡ޓއއ 很高兴见到大家,希望能够和大家一起交流学习,共同进步。 这一节我们来学习指针的相关知识,学习内存和地址,指针变量和地址,包…...

在 UniApp 中实现中间凸起 TabBar 的完整指南

如何在 UniApp 中设置中间 TabBar 凸起效果 在移动应用开发中,TabBar 是常见的导航组件,而中间凸起的 TabBar 按钮则是一种流行的设计风格,常用于突出重要功能(如发布、拍照等)。UniApp 提供了 midButton 属性&#x…...

Redis大key

Redis大key基本概念,影响 Redis 大 key 指在 Redis 中存储了大量数据的键,它会对 Redis 的性能和内存管理产生影响。 大key的定义与value的大小和元素数量有关,但这个定义并不是绝对的,而是相对的,具体取决于系统的使用…...

WPF高级 | WPF 与数据库交互:连接、查询与数据更新

WPF高级 | WPF 与数据库交互:连接、查询与数据更新 前言一、数据库交互基础概念1.1 数据库简介1.2 数据访问技术 二、WPF 与数据库连接2.1 连接字符串2.2 建立连接 三、WPF 中的数据查询3.1 使用ADO.NET进行数据查询3.2 使用 Entity Framework 进行数据查询3.3 使用…...

CogBlobTool工具

CogBlobTool是一款专用于图像斑点检测于分析的 工具,通过灰度值阈值分割和特征过滤,帮助在复杂背景中提取目标区域,并计算几何属性。 效果图 注意:在这里只有一张图像可以不使用模板匹配工具 CogBlobTool工具的功能 斑点检测于…...

C# WinForm程序中如何调试dll接口

公司的SF系统是自主开发的。不同的机种会有不同数据记录保存的需求,尤其是客户SQE更是各种奇思妙想......于是做了一个接口,实践之下效果还不错呢。 每每总是忘记怎么调试接口,特记录下备查。首先要将, 1 DLL项目与WinForms项目…...

自然语言处理:词频-逆文档频率

介绍 大家好,博主又来给大家分享知识了。本来博主计划完成稠密向量表示的内容分享后,就开启自然语言处理中文本表示的讲解。可在整理分享资料的时候,博主发现还有个知识点,必须得单独拎出来好好说道说道。 这就是TF-IDF&#xf…...

【银河麒麟高级服务器操作系统】服务器测试业务耗时问题分析及处理全流程分享

更多银河麒麟操作系统产品及技术讨论,欢迎加入银河麒麟操作系统官方论坛 https://forum.kylinos.cn 了解更多银河麒麟操作系统全新产品,请点击访问 麒麟软件产品专区:https://product.kylinos.cn 开发者专区:https://developer…...

基于大数据的民宿旅馆消费数据分析系统

【大数据】基于大数据的民宿旅馆消费数据分析系统(完整系统源码开发笔记详细部署教程)✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 该系统可以揭示民宿市场的消费模式和价格分布情况,帮助理解消费者偏好、价格走势及…...

Spring-AI搭建企业专属知识库 一

环境介绍&#xff1a;Spring3.3.2 JDK 21 POM文件 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation&…...

极简本地体验deepseek大模型教程

一 题外随感&#xff1a;时代之问 就像狄更斯在双城记中所述&#xff0c;“这是最好的时代&#xff0c;这是最坏的时代”。每一代人都有其所处的时代&#xff0c;每一个时代都有其所谓好的一面和不那么好的一面。很多时候随口的一句大环境不好&#xff0c;就似乎给了自己一个最…...

RabbitMQ系列(五)基本概念之Queue

在 RabbitMQ 中&#xff0c;Queue&#xff08;队列&#xff09; 是存储消息的容器&#xff0c;也是消息传递的核心载体。以下是其核心特性与作用的全方位解析&#xff1a; 一、Queue 的定义与核心作用 消息存储容器 Queue 是 RabbitMQ 中实际存储消息的实体&#xff0c;生产者…...

【记录】成为创作者的第 730 天(两年)

收获 还是总在感叹走到今天收获的一切&#xff0c;都是自己曾经不敢想的。 无论是靠自己努力拿到的 Offer&#xff0c;还是在 CSDN 网站上结交的网友和前辈们&#xff0c;都是我莫大的荣幸和财富&#xff0c;感恩一切、感恩自己。 过去一年的收获真的数不胜数&#xff0c;抛…...

深度剖析数据分析职业成长阶梯

一、数据分析岗位剖析 目前&#xff0c;数据分析领域主要有以下几类岗位&#xff1a;业务数据分析师、商业数据分析师、数据运营、数据产品经理、数据工程师、数据科学家等&#xff0c;按照工作侧重点不同&#xff0c;本文将上述岗位分为偏业务和偏技术两大类&#xff0c;并对…...

后进先出(LIFO)详解

LIFO 是 Last In, First Out 的缩写&#xff0c;中文译为后进先出。这是一种数据结构的工作原则&#xff0c;类似于一摞盘子或一叠书本&#xff1a; 最后放进去的元素最先出来 -想象往筒状容器里放盘子&#xff1a; &#xff08;1&#xff09;你放进的最后一个盘子&#xff08…...

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...

Python:操作 Excel 折叠

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

聊聊 Pulsar:Producer 源码解析

一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台&#xff0c;以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中&#xff0c;Producer&#xff08;生产者&#xff09; 是连接客户端应用与消息队列的第一步。生产者…...

pam_env.so模块配置解析

在PAM&#xff08;Pluggable Authentication Modules&#xff09;配置中&#xff0c; /etc/pam.d/su 文件相关配置含义如下&#xff1a; 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块&#xff0c;负责验证用户身份&am…...

蓝桥杯 2024 15届国赛 A组 儿童节快乐

P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡&#xff0c;轻快的音乐在耳边持续回荡&#xff0c;小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下&#xff0c;六一来了。 今天是六一儿童节&#xff0c;小蓝老师为了让大家在节…...

Python实现prophet 理论及参数优化

文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候&#xff0c;写过一篇简单实现&#xff0c;后期随着对该模型的深入研究&#xff0c;本次记录涉及到prophet 的公式以及参数调优&#xff0c;从公式可以更直观…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中&#xff0c;UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南

文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/55aefaea8a9f477e86d065227851fe3d.pn…...

聊一聊接口测试的意义有哪些?

目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开&#xff0c;首…...