docker 部署项目的操作文档,安装nginx
目录
- 1 部署环境检查
- 2 相关知识点
- 2.1 docker默认镜像存放地址
- 2.2 docker 的镜像都是tar 包?
- 2.3 Docker-compose 是直接使用镜像创建容器?
- 2.4 Docker Compose down 就是将容器删除?
- 2.5 删除,会删除挂载嘛
- 2.6 DockerFile 和 docker compose 区别
- 3 部署nginx
1 部署环境检查
1 是否安装docker
2 是否安装docker-compose
3 docker默认镜像存放地址在/var/lib/docker 目录下,查看此目录下是否有足够的空间df -h 目录名 查看所在目录 挂载目录及使用情况
4 查看机器,生成数据的存储空间dh -h
5 检查是否系统是否为x86系统内核,( 部署包内的 java8镜像,smb软件 只支持x86系统)uname -a
2 相关知识点
2.1 docker默认镜像存放地址
在Linux系统上,Docker默认将镜像存储在/var/lib/docker
目录下。这个目录包含了Docker的运行时数据,包括镜像、容器、卷等。
在/var/lib/docker
目录下,镜像的具体存放位置如下:
- 镜像层(Image Layers):
/var/lib/docker/image/overlay2
目录下存放了镜像的各个层。 - 镜像元数据(Image Metadata):
/var/lib/docker/image/overlay2/repositories.json
文件包含了镜像的元数据信息,如镜像的名称、标签等。
请注意,/var/lib/docker
目录下的文件和目录属于Docker的运行时数据,对其进行修改或删除可能会导致Docker的不稳定或数据丢失。如果你需要备份或迁移Docker的镜像数据,建议使用Docker提供的相关命令或工具来操作。
此外,值得一提的是,Docker的存储驱动可以根据不同的配置进行更改,因此实际的镜像存放位置可能会因配置而异。但对于大多数默认安装的Docker环境来说,/var/lib/docker
是默认的镜像存放地址。
2.2 docker 的镜像都是tar 包?
是的,Docker的镜像实际上是以tar包的形式存储的。每个Docker镜像都由多个层(layers)组成,这些层以文件系统的形式存储在Docker宿主机上。
每个镜像层都是一个只读的文件系统,它包含了文件和目录的快照。当你使用Docker构建镜像时,每一条指令都会创建一个新的镜像层。这种分层的结构使得镜像的构建和共享变得高效,因为多个镜像可以共享相同的层。
当你从Docker Hub或其他镜像仓库拉取镜像时,实际上是将这些镜像层以tar包的形式下载到本地。这些tar包会被Docker存储在宿主机的文件系统中,供后续的容器创建和运行使用。
你可以使用docker save
命令将镜像保存为tar包,使用docker load
命令将tar包加载为镜像。这些命令可以让你在不同的Docker环境之间备份、迁移和共享镜像。
总结起来,Docker镜像实际上是由多个层组成的,以tar包的形式存储在宿主机上。这种分层结构和使用tar包的方式使得Docker镜像的构建、共享和管理变得更加灵活和高效。
2.3 Docker-compose 是直接使用镜像创建容器?
是的,Docker Compose是一个用于定义和运行多容器Docker应用程序的工具。使用Docker Compose,你可以使用一个单独的YAML文件来定义多个容器、它们之间的关联关系以及其他配置选项。然后,通过运行docker-compose up
命令,Docker Compose将根据定义的配置创建并启动所有的容器。
在Docker Compose配置文件中,你可以指定要使用的镜像名称、容器的名称、端口映射、环境变量、卷挂载等等。当你运行docker-compose up
命令时,Docker Compose会自动下载所需的镜像(如果本地不存在)并创建相应的容器。
下面是一个简单的Docker Compose配置文件示例,用于创建一个包含PostgreSQL和Redis两个容器的应用程序:
version: '3'
services:db:image: postgresenvironment:POSTGRES_PASSWORD: mysecretpasswordredis:image: redis
在这个示例中,我们定义了两个服务(即容器):db
和redis
。db
服务使用了postgres
镜像,并设置了PostgreSQL的密码为mysecretpassword
。redis
服务使用了redis
镜像。
要运行这个配置文件,你可以在包含该文件的目录中打开终端或命令提示符,并运行以下命令:
docker-compose up
Docker Compose将会根据配置文件创建并启动db
和redis
两个容器。你可以通过docker-compose ps
命令来查看容器的状态。
总结来说,Docker Compose是通过配置文件来创建和管理多个容器的工具,它简化了多容器应用程序的部署和管理过程。
2.4 Docker Compose down 就是将容器删除?
是的,docker-compose down
命令用于停止并删除由Docker Compose启动的容器。当你运行docker-compose down
命令时,Docker Compose将会停止并删除在配置文件中定义的所有服务(容器),同时还会删除相关的网络和卷(如果有定义)。这个命令可以用来清理整个应用程序的运行环境。
需要注意的是,docker-compose down
命令会删除容器及其相关资源,包括数据卷中的数据。如果你希望保留数据,可以使用docker-compose stop
命令来停止容器,而不是使用docker-compose down
命令。
确保在运行docker-compose down
命令之前,你已经进入到包含docker-compose.yml
文件的目录,并且已经安装并正确配置了Docker Compose。
2.5 删除,会删除挂载嘛
是的,当你使用docker-compose down
命令删除容器时,它会删除与容器相关联的挂载卷(如果有定义)。挂载卷是将容器内的路径与宿主机上的路径进行关联,以便在容器重启或删除后保留数据。
如果你希望保留挂载卷中的数据,可以使用docker-compose down -v
命令。这个命令会在删除容器的同时,也删除挂载卷。如果你想要保留挂载卷中的数据,可以备份或迁移挂载卷的数据到其他位置,然后再运行docker-compose down -v
命令来删除容器和挂载卷。
需要注意的是,删除挂载卷会永久删除其中的数据,因此在执行删除操作之前,请确保备份了重要的数据。
yml 里面写了 volumes:- /home/docker/nginx/data:/web/ 之后down 之后,宿主机里面的数据会删除嘛
如果你在docker-compose.yml
文件中使用了以下的挂载卷定义:
volumes:- /home/docker/nginx/data:/web/
然后执行docker-compose down
命令来删除容器,那么默认情况下,这个挂载卷/home/docker/nginx/data
上的数据将会被保留在宿主机上。
docker-compose down
命令默认会删除容器实例,但不会删除挂载卷。只有在使用docker-compose down -v
命令时,才会删除与容器关联的挂载卷。
因此,如果你只执行了docker-compose down
命令,宿主机上的数据将会保留在/home/docker/nginx/data
目录中。如果你想要删除挂载卷以及宿主机上的数据,可以使用docker-compose down -v
命令。在执行删除操作之前,请确保备份了重要的数据。
2.6 DockerFile 和 docker compose 区别
Dockerfile 和 Docker Compose 是 Docker 中两个不同的概念和工具,它们用于不同的目的。
Dockerfile 是一个文本文件,用于定义和构建 Docker 镜像。它包含了一系列的指令,用于描述如何构建一个 Docker 镜像的步骤,包括基础镜像选择、安装软件包、复制文件、设置环境变量等。通过 Dockerfile,你可以自定义和管理你的镜像构建过程,以满足你的应用程序的需求。
Docker Compose 是一个工具,用于定义和管理多个 Docker 容器的应用程序。它使用一个 YAML 文件(通常称为 docker-compose.yml)来描述应用程序的不同服务、网络设置、卷挂载等配置。通过 Docker Compose,你可以定义一个多容器的应用程序,并使用一个命令来启动、停止、重启整个应用程序。它简化了多容器应用程序的部署和管理。
总结一下:
- Dockerfile 用于构建 Docker 镜像,描述了如何构建一个镜像的步骤。
- Docker Compose 用于定义和管理多个 Docker 容器的应用程序,描述了应用程序的不同服务和配置。
在实际使用中,你可以使用 Dockerfile 构建一个镜像,然后使用 Docker Compose 来定义和管理多个使用这个镜像的容器。这样可以方便地管理容器之间的关系、网络设置等,并实现整个应用程序的部署和管理。
3 部署nginx
将nginx 的 tar 包上传到服务器
输入docker images,发现目前是没有镜像的,现在将tar 包变成镜像
docker load -i nginx.tar
以上就将tar 包变成镜像了
因为需要容器里面目录和宿主机目录要一一挂载,容器卷,所以我们在宿主机上面创建要和容器一一对应的目录
以上是ngixn 的目录,以后修改这个宿主机目录下的东西,nginx 容器里面就会修改。
这个conf 目录文件夹下,有一个nginx 配置
这个就是ngixn 的配置文件,以后我们就是修改这个配置文件
因为我们要使用 Docker-compose 去管理容器,所以要使用Docker-compose 的东西;
我们需要找一个位置,专门放各个yml 文件
现在有一个关于nginx 的yml 编排文件,就是使用他去管理
里面内容是:
version: "2"
services:nginx:image: nginxhostname: nginxcontainer_name: nginxports:- "18080:8080"- "18082:8081"- "18088:8087"volumes:- /home/docker/nginx/data:/web/- /home/docker/nginx/html:/usr/share/nginx/html- /home/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf- /home/docker/nginx/logs:/var/log/nginx- /home/metefont/hongt-data-center/hkdata:/HKONG/hkdata- /home/metefont/mapdata:/home/metefont/mapdataenvironment:- TZ=Asia/Shanghai
这个文件是一个Docker Compose的配置文件,用于创建和管理一个Nginx容器。
让我逐行解释每一行代码的意思:
version: "2"
这是Docker Compose配置文件的版本号。在这个示例中,使用的是版本号为2的配置文件格式。
version: "2"
services:nginx:image: nginxhostname: nginxcontainer_name: nginxports:- "18080:8080"- "18082:8081"- "18088:8087"volumes:- /home/softinstall/docker/nginx/data:/web/- /home/softinstall/docker/nginx/html:/usr/share/nginx/html- /home/softinstall/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf- /home/softinstall/docker/nginx/logs:/var/log/nginx- /home/metefont/hongt-data-center/hkdata:/HKONG/hkdata- /home/metefont/mapdata:/home/metefont/mapdataenvironment:- TZ=Asia/Shanghai
这部分定义了一个名为nginx
的服务(即Nginx容器)。以下是每个配置项的含义:
-
image: nginx
:指定使用的镜像为nginx
,这将从Docker Hub上下载Nginx镜像。 -
hostname: nginx
:设置容器的主机名为nginx
。 -
container_name: nginx
:指定容器的名称为nginx
。 -
ports
:定义端口映射,将主机的端口与容器的端口进行绑定。在这个示例中,将主机的18080端口映射到容器的8080端口,将主机的18082端口映射到容器的8081端口,将主机的18088端口映射到容器的8087端口。 -
volumes
:定义卷挂载,将主机的目录与容器的目录进行映射。在这个示例中,将主机的/home/docker/nginx/data
目录映射到容器的/web/
目录,将主机的/home/docker/nginx/html
目录映射到容器的/usr/share/nginx/html
目录,将主机的/home/docker/nginx/conf/nginx.conf
文件映射到容器的/etc/nginx/nginx.conf
文件,将主机的/home/docker/nginx/logs
目录映射到容器的/var/log/nginx
目录,将主机的/home/metefont/hongt-data-center/hkdata
目录映射到容器的/HKONG/hkdata
目录,将主机的/home/metefont/mapdata
目录映射到容器的/home/metefont/mapdata
目录。 -
environment
:设置环境变量。在这个示例中,设置时区为Asia/Shanghai
。
这个配置文件的作用是创建一个名为nginx
的Nginx容器,并指定了端口映射、卷挂载和环境变量等配置。通过运行docker-compose up
命令,Docker Compose将会根据这个配置文件创建并启动该容器。
在这个nginx.yml 文件夹下,执行下面就启动了
docker-compose -f nginx.yml up -d查看日志
docker logs -f nginx确保nginx.conf 没问题,才可以启动成功关闭容器
docker-compose -f nginx.yml down如果第一次启动失败,要修改完配置文件之后,关闭之后重新启动
先执行
docker-compose -f nginx.yml down
后执行
docker-compose -f nginx.yml up -d
进入容器内部:
docker exec -it 容器id /bin/bash
放一个图片,浏览器访问
相关文章:

docker 部署项目的操作文档,安装nginx
目录 1 部署环境检查2 相关知识点2.1 docker默认镜像存放地址2.2 docker 的镜像都是tar 包?2.3 Docker-compose 是直接使用镜像创建容器?2.4 Docker Compose down 就是将容器删除?2.5 删除,会删除挂载嘛2.6 DockerFile 和 docker …...
spring boot 源码解读与原理分析
一、概述 Spring Boot是一个基于Spring框架的开源项目,旨在简化Spring应用程序的创建和部署。它通过自动配置和约定大于配置的原则,使得开发者能够快速构建独立、可运行的、生产级别的Spring应用程序。本文将对Spring Boot的源码进行解读,并…...

Python基础(二十四、JSON和pyecharts)
文章目录 一、JSON1.JSON介绍2.JSON格式数据转化3.示例 二、pyecharts1.安装pyecharts包2.查看官方示例 三、开发示例 一、JSON 1.JSON介绍 JSON是一种轻量级的数据交互格式,采用完全独立于编程语言的文本格式来存储和表示数据(就是字符串)…...

Java 并发之《深入理解 JVM》关于 volatile 累加示例的思考
在周志明老师的 《深入理解 JVM》一书中关于 volatile 关键字线程安全性有一个示例代码(代码有些许改动,语义一样): public class MyTest3 {private static volatile int race 0;private static void increase() {race;}public …...
GPM合并资料整理-GEM部分
一、性能数据上报项 1. CPU模块 上报键值说明采集平台cpu当前进程cpu使用率平均值Android & iOStotcpu系统cpu总使用率平均值Android & iOScpu_temp_maxcpu最高温度Androidcpu_temp_avgcpu温度平均值Androidgpu_temp_avggpu温度平均值Androidgpu_temp_maxgpu最高温度…...
STM32使用1.69寸液晶显示模块使用缓冲区实现快速刷新全屏显示字符串功能
一个1.69寸SPI接口的液晶显示模块,有320*24076800个点,每个点有2个字节表示RGB的颜色,所以需要153.6K个字节的数据来刷新全屏,如果SPI口输出数据不是高速并且不紧密排列的话,刷新就会比较慢,有从下到下的肉…...
SpringBoot AOP
依赖引入 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId> </dependency>代码实现 以给公共字段注入值为例 公共字段与枚举类: private LocalDateTime createT…...

鉴源论坛 · 观模丨浅谈Web渗透之信息收集(下)
作者 | 林海文 上海控安可信软件创新研究院汽车网络安全组 版块 | 鉴源论坛 观模 社群 | 添加微信号“TICPShanghai”加入“上海控安51fusa安全社区” 信息收集在渗透测试过程中是最重要的一环,“浅谈web渗透之信息收集”将通过上下两篇,对信息收集、…...

构建自己的私人GPT-支持中文
上一篇已经讲解了如何构建自己的私人GPT,这一篇主要讲如何让GPT支持中文。 privateGPT 本地部署目前只支持基于llama.cpp 的 gguf格式模型,GGUF 是 llama.cpp 团队于 2023 年 8 月 21 日推出的一种新格式。它是 GGML 的替代品,llama.cpp 不再…...
php将文本内容写入一个文件(面向过程写法)
一、封装2个函数,读写文件 /*** desc 读取文件内容* param string $filename* return array*/ private function readContent(string $filename): array {$text file_get_contents($filename);if (!$text) {return [];}$result json_decode($text,true);return…...

SPDK As IPU Firmware
对于不熟悉术语Infrastructure Processing Unit (IPU, 基础设施处理器)的同学,IPU是PCIe形态的卡,连接到主机系统后可以卸载主机的“基础设施”工作。它通常是面向云服务商或者超融合服务提供商的。对于熟悉SPDK的开发人员来理解,这些卡通常具…...
快速删除node_modules文件夹
文章目录 快速删除node_modules文件夹PowerShell命令快速删除使用npm提供的命令删除node_modules 快速删除node_modules文件夹 前端开发过程中,经常会遇到npm操作问题,有时候不得不需要删除node_modules目录下所有的文件,然后重新npm install npm cache clean --force rm -rf…...

Mac安装nvm以及使用nvm安装node
1. 安装nvm命令 git clone https://gitee.com/mirrors/nvm.git ~/.nvm && cd ~/.nvm && git checkout git describe --abbrev0 --tags2. 配置环境变量 vi ~/.bash_profileexport NVM_DIR"$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] &&…...

vue element-ui的table列表中展示缩略图片效果实例
这篇文章主要给大家介绍了关于vue element-ui的table列表中展示多张图片(可放大)效果的相关资料,文中通过代码示例介绍的非常详细,需要的朋友可以参考下 一、效果图 二、代码部分 1、原理 使用 <el-table-column> 和 <el-image> 组件来在表格中插入缩略图 2、te…...

C/C++动态内存管理
文章目录 前言1.C/C内存分布2.C语言中动态内存管理方式:malloc/calloc/realloc/free3.C内存管理方式3.1 new/delete操作内置类型3.2 new和delete操作自定义类型 4. operator new与operator delete函数4.1 operator new与operator delete函数 5. new和delete的实现原…...

矩阵中的最长递增路径
题目链接 矩阵中的最长递增路径 题目描述 注意点 不能 在 对角线 方向上移动或移动到 边界外(即不允许环绕) 解答思路 因为最长递增路径一定是连续的,所以想到使用深度优先遍历来做。如果只使用深度优先遍历会导致超时(同一个…...

vue2 element 弹出框拖拽会出现一层阴影问题
问题如图所示: 因增加 draggable 属性导致我弹窗表单清空文本框时,从右向左选中字体会出现拖拽阴影效果 去掉 draggable 即可 <template><div class"sys-jobTrigger-container"><el-dialog:visible.sync"state.isShowD…...

idea git回滚之前提交记录
提交代码时,如果不小心提交了不需要提交的内容,在本地仓库中,此时需要回滚版本,如何回滚 1.打开git控制台,左下角git,选择要处理的分支,选择刷新获取最新git提交记录 2)选中自己commit需要回滚…...

什么是Modbus协议?
Modbus协议是一种在工业自动化领域广泛应用的通信协议,它允许不同设备之间进行可靠的数据交换和控制。该协议最初由Modicon公司于1979年创建,旨在提供一种简单而有效的方法,使PLC(可编程逻辑控制器)和其他自动化设备能…...
222.【2023年华为OD机试真题(C卷)】分配土地(扫描线算法-JavaPythonC++JS实现)
🚀点击这里可直接跳转到本专栏,可查阅顶置最新的华为OD机试宝典~ 本专栏所有题目均包含优质解题思路,高质量解题代码(Java&Python&C++&JS分别实现),详细代码讲解,助你深入学习,深度掌握! 文章目录 一. 题目-分配土地二.解题思路三.题解代码Python题解代码…...
【位运算】消失的两个数字(hard)
消失的两个数字(hard) 题⽬描述:解法(位运算):Java 算法代码:更简便代码 题⽬链接:⾯试题 17.19. 消失的两个数字 题⽬描述: 给定⼀个数组,包含从 1 到 N 所有…...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...

相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...
在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?
uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...
Java 二维码
Java 二维码 **技术:**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...
Go 语言并发编程基础:无缓冲与有缓冲通道
在上一章节中,我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道,它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好࿰…...
音视频——I2S 协议详解
I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议,专门用于在数字音频设备之间传输数字音频数据。它由飞利浦(Philips)公司开发,以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...

深度学习水论文:mamba+图像增强
🧀当前视觉领域对高效长序列建模需求激增,对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模,以及动态计算优势,在图像质量提升和细节恢复方面有难以替代的作用。 🧀因此短时间内,就有不…...
08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险
C#入门系列【类的基本概念】:开启编程世界的奇妙冒险 嘿,各位编程小白探险家!欢迎来到 C# 的奇幻大陆!今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类!别害怕,跟着我,保准让你轻松搞…...