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

Docker-MySQL安装-命令解读-常见命令-数据卷挂载-本地目录挂载-自定义镜像-网络-前端部署-DockerCompose

目录

Docker:

安装MySQL:

镜像容器:

镜像仓库:

​编辑命令解读:

镜像命名规范:

docker run中常见参数:

Docker常见命令:

​编辑数据卷:

​编辑数据卷-操作命令:

挂载数据卷:

本地目录挂载:

命令:

注意:

自定义镜像:

镜像结构:

Dockerfile:

网络:

项目部署:

部署服务器:

前端部署:

DockerCompose:

对比:

基于DockerCompose快速部署tlias项目:

DockerCompose命令:


Docker:

安装MySQL:

先停掉虚拟机中的MySQL,确保你的虚拟机已经安装Docker,且网络开通的情况下,执行下面命令即可安装MySQL

docker run -d \--name mysql \-p 3307:3306 \-e TZ=Asia/Shanghai \-e MYSQL_ROOT_PASSWORD=123 \mysql:8

镜像容器:

当我们利用Docker安装应用时,Docker会自动搜索并下载应用镜像(image)。镜像不仅包含应用本身,还包含应用运行时所需要的环境、配置、系统函数库。Docker会在运行镜像时创建一个隔离环境,称为容器(comtainer)。

镜像仓库:

存储和管理镜像的平台,Docker官方维护了一个公共仓库:Docker Hub

命令解读:

docker run -d \--name mysql \-p 3307:3306 \-e TZ=Asia/Shanghai \-e MYSQL_ROOT_PASSWORD=123 \mysql:8

docker run:创建并运行一个容器,-d是让容器在后台运行

--name mysql:给容器起个名字,必须唯一

-p 3307:3306:设置端口映射

-e KEY=VALUE:是设置环境变量

mysql:8   :指定运行的镜像的名字,版本

镜像命名规范:

镜像名称一般分两部分组成:[repository]:[tag]。

其中repository就是镜像名

tag是镜像的版本

mysql:8   :mysql指定运行的镜像的名字,8指定版本

在没有指定tag时,默认是latest,代表最新的镜像

docker run中常见参数:

-d :让容器后台运行

--name:给容器命名,唯一

-e:环境变量

-p:宿主机端口映射到容器内端口

Docker常见命令:

Docker最常见的是操作镜像,容器的命令,见官方文档https://docs.docker.com/

数据卷:

数据卷是一个虚拟目录,是容器内目录与宿主机目录之间映射的桥梁

数据卷-操作命令:

命令说明
docker volume create创建数据卷
docker volume ls   查看所有数据卷
docker vloume rm删除指定数据卷
docker volume inspect 查看某个数据的详情
docker volume prune清除所有未使用的数据卷

在执行docker run命令时,使用 -v 数据卷:容器内目录 形式可以完成数据卷挂载(数据卷不存在会自动创建)

挂载数据卷:

在创建容器时,利用 -v 数据卷名:容器内目录完成挂载

容器创建时,如果发现挂载的数据卷不存在时,会自动创建

本地目录挂载:

命令:

docker run -d --name 容器名 -p 宿主机端口:容器端口 -v 宿主机目录或文件:容器内目录或文件 镜像名

注意:

本地目录必须以 / 或 ./ 开头,如果直接以名称开头,会被识别为数据而非本地目录

-v mysql:/var/lib/mysql  会被识别为一个数据卷,数据卷叫mysql

-v ./mysql:/var/lib/mysql 会被识别为当前目录下的mysql目录

自定义镜像:

镜像就是包含了应用程序,程序运行的系统函数库,运行配置等文件的文件包。构建镜像的过程其实就是把上述文件打包的过程

构建一个Java镜像的步骤:

1.准备一个Linux运行环境

2.安装JDK并配置环境变量

3.拷贝jar包

4.编写运行脚本

镜像结构:

入口(Entrypoint):镜像运行入口,一般是程序启动的脚本和参数

层(Layer):添加安装包,依赖,配置等,每次操作都形成新的一层

基础镜像(Baseimage):应用依赖的系统函数库,环境,配置,文件等

Dockerfile:

Dockerfile就是一个文本文件,其中包含一个个的指令(Instruction),用指令来说明要执行什么操作来构建镜像。将来Docker可以根据Dockerfile帮我们构建镜像

常见指令如下:

指令说明示例
FROM指定基础镜像FROM centos:7
ENV             设置环境变量,可以在后面指令使用ENV key=balue
COPY拷贝本地文件到镜像的指定目录COPY ./jdk17.tar.gz /tmp
RUN执行Linux的shell命令,一般是安装过程的命令RUN tar -zxvf /tmp/jdk17.tar.gz
EXPOSE指定容器运行时监听的端口,是给镜像使用者看的EXPOSE 8080
ENTRYPOINT镜像中应用的启动命令,容器运行时调用ENTRYPOINT java -jar xx.jar

我们可以基于CentOS7基础镜像,利用Dockerfile描述镜像结构

#使用CentOS 7作为基础镜像
FROM centos:7
#添加JDK到镜像中
COPY jdk17.tar.ge /usr/local/
RUN tar -xzf /usr/local/jdk17.tar.gz -C /usr/local/ && rm/sur/local/jdk.tar.gz
#设置环境变量
ENV JAVA_HOME=/usr/local/jdk-17.0.10
ENV PATH=$JAVA_HOME/bin:$PATH
#创建应用目录
RUN mldir -p /app
WORKDIR /app
#复制应用JAR文件到容器
COPY app.jar app.jar
#暴露端口
EXPOSE 8080
#运行命令
ENTRYPOINT ["java","-jar","/app/app.jar"]

编写好了Dockerfile之后,可以用下面命令来构建镜像:

docker build -t myImage:1.0 .

-t :是给镜像起名,格式依然是repository的格式,不指定tag时,默认为latest

.  :是指定Dockerfile所在目录,如果就在当前目录。则指定为"."

构建镜像命令:docker build -t 镜像吗 Dockerfile目录

网络:

默认情况下,所有容器都是以bridege方式连接到Docker的一个虚拟网桥上

加入自定义网络的容器才可以通过容器名互相访问,Docker的网络操作如下:

命令       说明
docker network create创建一个网络
docker network ls查看所有网络
docker network rm删除所有网络
docker network prune清楚未使用的网络
docker network connect使指定容器连接加入某网络
docker network disconnect使指定容器连接离开某网络
docker network inspect查看网络详细信息

项目部署:

部署服务器:

需求:将我们开发的项目打包为镜像,并部署

步骤:

1.准备MySQL容器,并创建项目数据库及表结构

2.准备java应用(项目)镜像,部署Docker容器,运行测试

修改项目的配置文件,修改数据库服务地址及logback日志文件存放地址,打jar包

编写Dockerfile文件

构建Docker镜像

部署Docker容器

前端部署:

需求:创建一个新的nginx容器,将前端项目的静态资源文件部署到nginx中

步骤:

1.部署nginx容器(设置目录映射)

-v /root/tlias-nginx/html:/usr/share/nginx/html

-v /root/tlias-nginx/conf/nginx.conf:/etc/nginx/nginx.conf

2.将部署的静态资源文件及配置文件上传到服务器,执行命令创建nginx容器

DockerCompose:

Docker Compose通过一个单独的docker-compose.yml 模板文件(YAML 格式)来定义一组相关联的应用容器,帮助我们实现多个相关互联的Docker容器的快速部署

对比:

第一种:

docker run -d \--name nginx-tlias \-v /usr/local/app/html:/usr/share/nginx/html /-v /usr/local/app/conf/nginx.conf:/etc/nginx/nginx.conf \--network itheima \-p 80:80 \nginx:1.20.2

第二种:

service:nginx-tlias:image: "ithema:1.20.2"container_name: nginx-tliasvolumes:-"/usr/local/app/html:/usr/share/nginx/html"-"/usr/local/app/conf/nginx.conf:/etc/nginx/nginx.conf"networks:- ithemaports:- "80:80"
networks:itheima:name:itheima

基于DockerCompose快速部署tlias项目:

涉及到的服务:MySQL数据库、服务端、前端nginx

步骤:

1.准备资源(tlias.sql,服务端的jdk17,jar包,Dockerfile,前端项目打包文件,nginx.conf)

2.准备docker-compose.yml配置文件

3.基于DockerCompose快速构建项目

DockerCompose命令:

Docker Compose的命名格式:docker compose [OPTIONS] [COMMAND]

选项参数说明:

类型参数或指令说明
Options-f指定compose文件的路径和名称
Options-p指定project名称
Commandsup创建并启动所有service容器
Commandsdown停止并移除所有容器、网络
Commandsps列出所有启动的容器
Commandslogs查看指定容器的日志
Commandsstop停止容器
Commandsstart启动容器
Commandsrestart重启容器
Commandstop查看运行的进程

相关文章:

Docker-MySQL安装-命令解读-常见命令-数据卷挂载-本地目录挂载-自定义镜像-网络-前端部署-DockerCompose

目录 Docker: 安装MySQL: 镜像容器: 镜像仓库: ​编辑命令解读: 镜像命名规范: docker run中常见参数: Docker常见命令: ​编辑数据卷: ​编辑数据卷-操作命令&…...

Docker 安装部署Harbor 私有仓库

Docker 安装部署Harbor 私有仓库 系统环境:redhat x86_64 一、首先部署docker 环境 定制软件源 wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repoyum install -y yum-utils device-mapper-persistent-data lvm2…...

linux基本命令(1)--linux下的打包命令 -- tar 和gzip

tar 解压 ,打包 语法:tar [主选项辅选项] 文件或者目录 使用该命令时,主选项是必须要有的,它告诉tar要做什么事情,辅选项是辅助使用的,可以选用。 主选项: c 创建新的档案文件。如果用户想备…...

Linux 文件系统全解析

笔记整理自 【双语视界】Linux文件系统全解析:从混乱到标准,一览核心目录! 可执行文件目录 /bin(基本系统命令) 包含核心操作系统程序,在系统启动时必须可用,即使没有挂载 /usr 也能运行。 这里…...

StarRocks 存算分离在京东物流的落地实践

康琪:京东物流高级技术专家、StarRocks & Apache Flink Contributor 导读:本文整理自京东物流高级技术专家在 StarRocks 年度峰会上的分享,UData 平台从存算一体到存算分离架构演进后,查询性能得到提升。Cache hit 时&#xf…...

英伟达GB300新宠:新型LPDDR5X SOCAMM内存

随着人工智能(AI)、机器学习(ML)和高性能计算(HPC)应用的快速发展,对于高效能、大容量且低延迟内存的需求日益增长。NVIDIA在其GB系列GPU中引入了不同的内存模块设计,以满足这些严格…...

HTML布局

HTML布局元素 <header>定义文档或者节的页眉 <nav>定义导航链接的容器 <section>定义文档中的一部分 <article>定义单独的文章 <aside>定义内容边栏&#xff08;如侧边栏&#xff09; footer定义文档或节的页脚 <details>定义额外的细节 …...

vue搭建一个树形菜单项目

首先搭建项目需要先通过步骤搭建一个vue的项目&#xff0c;然后创建一个component文件&#xff0c;里面新建一个index.vue页面来。 这是引入的element-ui组件库里的组件&#xff0c;来实现我的路由&#xff0c;渲染的是我存储的动态路由&#xff0c;所以需要先安装并且引用。 …...

具身智能 - Diffusion Policy:技术解析与应用实践

具身智能之 Diffusion Policy:技术解析与应用实践 一、Diffusion Policy 的核心概念 Diffusion Policy 是一种基于扩散模型(Diffusion Models)的决策生成框架,专为具身智能(Embodied Intelligence)设计。其核心思想是通过逐步去噪的过程,在复杂环境中生成鲁棒的动作序列…...

[C++] 智能指针 进阶

标题&#xff1a;[C] 智能指针 进阶 水墨不写bug 在很久之前我们探讨了智能指针的浅显认识&#xff0c;接下来会更加深入&#xff0c;从源码角度认识智能指针&#xff0c;从而了解智能指针的设计原理&#xff0c;并应用到以后的工作项目中。 本文将会按照C智能指针的发展历史&…...

kubernetes》》k8s》》 kubeadm、kubectl、kubelet

kubeadm 、kubectl 、kubelet kubeadm、kubectl和kubelet是Kubernetes中不可或缺的三个组件。kubeadm负责集群的快速构建和初始化&#xff0c;为后续的容器部署和管理提供基础&#xff1b;kubectl作为命令行工具&#xff0c;提供了与Kubernetes集群交互的便捷方式&#xff1b;而…...

AI日报 - 2025年3月30日

&#x1f31f; 今日概览&#xff08;60秒速览&#xff09; ▎&#x1f916; 模型进展 | Qwen2.5-Omni多模态实时交互&#xff0c;Gemini 2.5 Pro/GPT-4o低调升级&#xff0c;Claude内部思考过程揭秘。 新模型和升级持续涌现&#xff0c;多模态与内部机制理解成焦点。 ▎&#x…...

C++中的new、malloc、realloc、calloc——特点?函数原型?释放方式?区别?校招面试常问内容?

作者&#xff1a;求一个demo 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 内容通俗易懂&#xff0c;没有废话&#xff0c;文章最后是面试常问内容&#xff08;建议通过标题目录学习&#xff09; 废话不多…...

27_promise

插入一下前端助手测试&#xff0c;顺手可以用来做安全 promise promise 是一个es6新增的语法 汉语&#xff1a;承诺的意思 作用:是专门用来解决回调地狱!!!! 什么是回调函数&#xff1f; <script>// 回调函数 callback回调// 就是把函数A当作参数传递到函数B中// 在函…...

leetcode刷题日记——跳跃游戏 II

[ 题目描述 ]&#xff1a; [ 思路 ]&#xff1a; 题目要求在一个一定能达到数组末尾的跳跃数组中(见55题 跳跃游戏)&#xff0c;找出能够跳到末尾的最小次数要求次数最少&#xff0c;那肯定是选取能选步数中最大的数。也就是在当前能够达到的距离中&#xff0c;选择能够达到的…...

无人机进行航空数据收集对于分析道路状况非常有用-使用无人机勘测高速公路而不阻碍交通-

无人机进行航空数据收集对于分析道路状况非常有用-使用无人机勘测高速公路而不阻碍交通- 瑞士拥有1,400 多公里长的高速公路网络。这些公路将人和货物从山谷高原运送到阿尔卑斯山的最高山口。维护这些高速公路使国家得以顺利运转。高速公路维护的重要性显而易见&#xff0c;但在…...

注意力蒸馏技术

文章目录 摘要abstract论文摘要简介方法预备知识注意力蒸馏损失注意力引导采样 实验结论总结参考文献 摘要 本周阅读了一篇25年二月份发表于CVPR 的论文《Attention Distillation: A Unified Approach to Visual Characteristics Transfer》,论文开发了Attention Distillation…...

PERL开发环境搭建>>Windows,Linux,Mac OS

特点 简单 快速 perl解释器直接对源代码程序解释执行,是一个解释性的语言, 不需要编译器和链接器来运行代码>>速度快 灵活 借鉴了C/C, Basic, Pascal, awk, sed等多种语言, 定位于实用性语言,既具备了脚本语言的所有功能,也添加了高级语言功能 开源.免费 没有&qu…...

赛博威智慧导购平台,融合AI激活一线导购效能,破局增长瓶颈

导购管理≠“管人”&#xff0c;价值释放才是终极命题 在快消行业&#xff0c;一线导购是链接品牌与消费者的核心触点&#xff0c;更是市场洞察与销售转化的关键枢纽。然而&#xff0c;许多企业对导购的管理仍停留在“管人”的初级阶段&#xff1a;基础考勤、任务下发、薪资核…...

鸿蒙项目源码-记账本app个人财物管理-原创!原创!原创!

鸿蒙记账项目源码个人财务管理含文档包运行成功ArkTS语言。 我一个月写的原创作品&#xff0c;请尊重原创。 原创作品&#xff0c;盗版必究&#xff01;&#xff01;&#xff01; api12 SDK5.0.0仅适用于最新的2024版本DevEco studio 共9个页面&#xff1a;广告倒计时页、登录、…...

深入理解 `git pull --rebase` 与 `--allow-unrelated-histories`:区别、原理与实战指南

&#x1f680; git pull --rebase vs --allow-unrelated-histories 全面解析 在日常使用 Git 时&#xff0c;我们经常遇到两种拉取远程代码的方式&#xff1a;git pull --rebase 和 git pull --allow-unrelated-histories。它们的区别是什么&#xff1f;各自适用哪些场景&…...

ExpTimerApcRoutine函数分析之作用是ActiveTimerListHead里面移除定时器_etimer

第一部分&#xff1a; VOID ExpTimerApcRoutine ( IN PKAPC Apc, IN PKNORMAL_ROUTINE *NormalRoutine, IN PVOID *NormalContext, IN PVOID *SystemArgument1, IN PVOID *SystemArgument2 ) /* Routine Description: This function is the special …...

Ovito的python脚本

在 OVITO 里,Python 对象是构建脚本化操作的基础。下面为你详细介绍 OVITO 中 Python 对象的基本概念: 1. 数据管道(Pipeline) 数据管道是 OVITO 里最核心的对象之一。它就像一个流水线,把数据输入进来,经过一系列处理步骤,最后输出处理好的数据。 创建管道:借助 imp…...

【免费】2007-2019年各省地方财政文化体育与传媒支出数据

2007-2019年各省地方财政文化体育与传媒支出数据 1、时间&#xff1a;2007-2019年 2、来源&#xff1a;国家统计局、统计年鉴 3、指标&#xff1a;行政区划代码、地区、年份、地方财政文化体育与传媒支出 4、范围&#xff1a;31省 5、指标说明&#xff1a;地方财政在文化、…...

3PL EDI:SA Piper Logistics EDI需求分析

SA Piper Logistics成立于2005年&#xff0c;是一家专注于全球供应链管理的第三方物流服务商&#xff08;3PL&#xff09;&#xff0c;总部位于美国芝加哥。公司以“优化物流效率&#xff0c;重塑供应链价值”为使命&#xff0c;提供仓储管理、运输规划、订单履行及跨境清关等一…...

NOIP2007提高组.矩阵取数游戏

题目 492. 矩阵取数游戏 思路 不难发现, 每一行之间是独立的, 因此可以求出每一行的最大值, 然后行与行之间最大值相加, 就是总的最大值 对于行内来说, 每次可以选取左边或者右边, 可以使用区间 d p dp dp求解, 时间复杂度 O ( n 3 ) O(n ^ 3) O(n3), 因为列的最大值是 80 …...

项目实战--权限列表

后端数据&#xff1a; 用表格实现权限列表 const dataSource [{key: 1,name: 胡彦斌,age: 32,address: 西湖区湖底公园1号,},{key: 2,name: 胡彦祖,age: 42,address: 西湖区湖底公园1号,}, ];const columns [{title: 姓名,dataIndex: name,key: name,},{title: 年龄,dataInd…...

若依赖前端处理后端返回的错误状态码

【背景】 后端新增加了一个过滤器&#xff0c;用来处理前端请求中的session 若依赖存放过滤器的目录&#xff1a;RuoYi-Vue\ruoyi-framework\src\main\java\com\ruoyi\framework\security\filter\ 【问题】 后端返回了一个状态码为403的错误&#xff0c;现在前端需要处理这…...

【计网】数据包

期末复习自用的&#xff0c;处理得比较草率&#xff0c;复习的同学或者想看基础的同学可以看看&#xff0c;大佬的话可以不用浪费时间在我的水文上了 1.数据包的定义&#xff1a; 数据包是网络通信中的基本单元&#xff0c;它包含了通过网络传输的所有必要信息。数据包的结构…...

web权限划分提权和移权

前言&#xff1a;权限的基本认知 渗透权限划分&#xff1a;假如我们通过弱口令进入到web的后台 这样我们就拿到了web的管理员权限 管理员权限是web中最高的权限&#xff08;一般我们进入web的时候数据库会进行用户权限的划分&#xff1a;假设 0-10为最高的权限 11-10000为普通…...