编程入门(九)【linux系统下docker的部署与发布网站】

读者大大们好呀!!!☀️☀️☀️


请添加图片描述
👀期待大大的关注哦❗️❗️❗️
🚀欢迎收看我的主页文章➡️木道寻的主页

文章目录

  • 🔥前言
  • 🚀什么是docker?
  • 🚀docker三要素
  • 🚀linux系统下docker的基本命令
  • 🚀docker实例:lamp部署网站
    • docker数据卷项目
      • 数据卷的概念
      • 数据集的基本操作
    • lamp镜像实现论坛部署
      • 操作步骤
  • ⭐️⭐️⭐️总结

🔥前言

当我们学习一门知识时,都会涉及到哲学三问:(我是谁?)什么是docker?(我为什么在这里?)为何要有docker?(我要去哪里?)docker要做什么?本篇将带你一起解答这些问题。

🚀什么是docker?

docker :应用容器引擎,产出各种容器(相当于小Linux)

为什么要有docker呢?

在传统的网站部署时,一个Linux服务器,部署一个web网站:如下图所示
在这里插入图片描述
这种模式下有很多弊端:
1、需要大量的服务器
2、启动速度慢
3、开发、测试、运维环境不一致,导致的bug可能因环境不一致引起
因此docker就运营而生了,只需要一台Linux服务器
在这里插入图片描述

docker要做什么呢?拿到源代码,在不同环境中发布网站

一个web网站需要什么?web服务需要:
1、接收客户端数据
2、连接数据库
3、调度开发网页
在这里插入图片描述

🚀docker三要素

1️⃣ 仓库 – repository ----网站docker提供各种镜像
命令:

docker search 镜像名字 在仓库查找

docker pull 镜像名字 下载镜像
docker run 镜像名字 执行镜像,没有镜像会自动下载

2️⃣镜像–images -----文件----》产生容器
对比传统的服务,比如lamp服务,NGINX服务,mysql服务等产生,对应的就是docker中的lamp镜像,MySQL镜像 ----》docker的镜像强调复制出大量的容器,镜像与容器是是一对多的关系。

3️⃣容器----container ----进程-----运行开发的代码与编程网站
镜像(Image)和 容器(Container)的关系,就像是面向对象程序设计中的 类 和 实例 一样,镜像是静态的定义,容器是镜像运行时的实体。
容器内的进程是运行在一个隔离的环境里的,就像独立于宿主机的另一台机器。
所有容器的文件写入操作,都应该使用 数据卷(Volume)、或者绑定宿主目录。

🚀linux系统下docker的基本命令

前期准备

1、linux | docker软件

  curl -fsSL https://get.docker.com/ | sh

在这里插入图片描述
2、web服务(lamp/nginx/tomcat/php-apache)+数据库服务
拉取镜像

docker pull php

在本地主机上使用一个不存在的镜像时 Docker 就会自动下载这个镜像。如果想预先下载这个镜像,可以使用这个命令。不指定版本, 会获取latest 镜像。
在这里插入图片描述

docker pull 镜像名:版本号

拉取指定版本的镜像
在这里插入图片描述
除了在有网的环境下进行镜像的拉取,还可以在离线的条件下预先下载了镜像文件
docker save 镜像tar包
在这里插入图片描述
1、导入镜像

docker load < 文件地址

在这里插入图片描述

其中image ID:为镜像的唯一编号,可以为其取别名,便于识别使用
先用docker images 命令查看镜像。再根据编号取别名:
在这里插入图片描述
再输入下列命令:

docker tag 前四位编号 别名(:描述)括号中如果没有描述则为默认latest版本

在这里插入图片描述
2、启动容器
命令:docker run -d 镜像别名
-d 守护,后台运行。
在这里插入图片描述
每执行一次就会创建一个容器!!!
3、查看容器状态
命令:docker ps -a
在这里插入图片描述
4、进入容器
命令:docker exec -it 容器id /bin/bash
在这里插入图片描述

5、退出容器
快捷键Ctrl+p再Ctrl+q
在这里插入图片描述
6、停止容器
命令:docker container stop 容器id
在这里插入图片描述
7、重启容器
命令:docker container start 容器id(启动容器)
docker container restart 容器id(终止容器运行,再启动)
在这里插入图片描述
8、删除容器
命令:docker container rm 容器ID(只能删除已经停止的容器)
在这里插入图片描述
9、docker 命令帮助

docker command --help

在这里插入图片描述

🚀docker实例:lamp部署网站

docker数据卷项目

数据卷的概念

数据卷,是一个可供一个或多个容器使用的特殊目录,特性有:
1️⃣数据卷可以在容器之间共享和重用
2️⃣对数据卷的修改会立马生效
3️⃣对数据卷的更新,不会影响镜像
4️⃣数据卷被设计用来持久化数据的,她的生命周期独立于容器

数据集的基本操作

创建数据卷

docker volume create 数据卷名
在这里插入图片描述

查看数据卷信息

docker volume inspect 数据卷名

在这里插入图片描述

查看所有的数据卷

docker volume ls
在这里插入图片描述

删除数据卷

docker volume rm 数据卷名
在这里插入图片描述

清理无主的数据卷

先创建几个数据卷,再进行清理
在这里插入图片描述
docker volume prune
在这里插入图片描述

挂载volume数据卷(此操作在下面部署时展示)

docker run -d -p 宿主机端口:容器内端口 -v 数据卷名:容器内路径 镜像名

lamp镜像实现论坛部署

根据lamp镜像构建网站的基础环境

操作步骤

环境解释:lamp----->Linux、Apache、mysql、PHP
命令执行:
1、准备需要的镜像

docker load < /home/centos-lamp.tar
docker images
docker tag 0b8d mdxcentos-lamp

在这里插入图片描述
2、当前目录中,新建一个lamp目录
mkdir lamp
3、将源码压缩包拷贝到lamp目录下,并解压
cp 源码压缩包位置 lamp
cd lamp
unzip 压缩包名
4、建立lamp项目需要的数据卷,并查看数据卷的存放路径
在这里插入图片描述
5、解压的目录中有一个upload目录(包含主页面的代码目录),将其复制到数据卷中,并给该目录授予读写执行的权限。
在这里插入图片描述在这里插入图片描述
6、生成临时容器,查看容器的端口与发布的目录,删除临时容器
命令:docker run -it docker.io /mdxcentos-lamp /bin/bash
cd /etc/httpd/conf
cat httpd.conf |greap DocumentRoot
cat httpd.conf |greap Listen
在这里插入图片描述
退出删除容器
exit
docker container stop 容器ID
docker container rm 容器ID
在这里插入图片描述
7、正式生成容器

docker run -d -p 8082:80 -v lampcvol:/var/www/html mdxcentos-lamp 
-p :将宿主机的8082端口映射到容器的80端口中
-v :将数据卷lampcvol挂载到容器中的发布目录/var/www/html

在这里插入图片描述
8、浏览器访问http://localhost:8082/upload进行安装,按照提示安装完成后,在浏览器输入http://localhost:8082/upload/forum.php显示该画面则安装完成。
在这里插入图片描述
9、不同路径发布,多个目录存放对应的开发源码,修改端口号

mkdir lamp1
mkdir lamp2
cp 源码文件路径 /lamp1
cp 源码文件路径 /lamp2
cd lamp1
unzip 目录下源码压缩包
chmod 777 -R .

docker run -d -p 8081:80 -v lampcvol:/var/www/html mdxcentos-lamp 

docker run -d -p 8083:80 -v lampcvol:/var/www/html mdxcentos-lamp 

通过访问不同的端口,为不同的用户提供环境(开发环境|运维环境|测试环境)

⭐️⭐️⭐️总结

docker三要素命令思维导图:
在这里插入图片描述

✈️✈️✈️如果喜欢这篇文章的话

🙏大大们可以动动发财的小手:
👉👉👉 点赞:👍收藏:⭐️评论:✍️👈👈👈

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

算法题-字符串

1.C字符串 c提供了一下两种类型的字符串表示形式&#xff1a; c风格字符串c引入的string类类型 1.1C风格字符串 C 风格的字符串起源于 C 语言&#xff0c;并在 C 中继续得到支持。字符串实际上是使用 null 字符 \0 终止的一维字符数组。因此&#xff0c;一个以 null 结尾的…

KnoBo:医书学习知识,辅助图像分析,解决分布外性能下降和可解释性问题

KnoBo&#xff1a;从医书中学习知识&#xff0c;辅助图像分析&#xff0c;解决分布外性能下降问题 提出背景KnoBo 流程图KnoBo 详解问题构成结构先验瓶颈预测器参数先验 解法拆解逻辑链对比 CLIP、Med-CLIPCLIPMed-CLIPKnoBo 训练细节预训练过程OpenCLIP的微调 构建医学语料库文…

【Nuxt3】vue3+tailwindcss+vuetify引入自定义字体样式

一、目的 在项目中引入自定义的字体样式&#xff08;全局页面都可使用&#xff09; 二、步骤 1、下载好字体 字体的后缀可以是ttf、otf、woff、eot或者svg&#xff08;推荐前三种&#xff09; 以抖音字体为例下载好放在静态文件夹&#xff08;font&#xff09;下 案例字…

notepad++中文出现异体汉字,怎么改正

notepad显示异体字&#xff0c;如何恢复&#xff1f; 比如 “门” 和 “直接” 的"直"字&#xff0c;显示成了 方法 修改字体&#xff0c; 菜单栏选择 Settings(设置&#xff09;&#xff0c;Style Configurator…&#xff08;语言格式设置…&#xff09;&#xf…

《昇思25天学习打卡营第22天|onereal》

文本解码原理--以MindNLP为例 回顾&#xff1a;自回归语言模型 根据前文预测下一个单词 一个文本序列的概率分布可以分解为每个词基于其上文的条件概率的乘积 &#x1d44a;_0:初始上下文单词序列&#x1d447;: 时间步当生成EOS标签时&#xff0c;停止生成。 MindNLP/huggi…

C++基础(三)

1.再探构造函数 之前的构造函数&#xff0c;初始化成员变量主要使用函数体内赋值&#xff0c;构造函数初始化还有一种方式&#xff0c;就是初始化列表&#xff0c;初始化列表的使用方式是以一个冒号开始&#xff0c;接着是一个以逗号分隔开的数据成员列表&#xff0c;每个“成…

【JavaScript】解决 JavaScript 语言报错:Uncaught SyntaxError: Unexpected identifier

文章目录 一、背景介绍常见场景 二、报错信息解析三、常见原因分析1. 缺少必要的标点符号2. 使用了不正确的标识符3. 关键词拼写错误4. 变量名与保留字冲突 四、解决方案与预防措施1. 检查和添加必要的标点符号2. 使用正确的标识符3. 检查关键词拼写4. 避免使用保留字作为变量名…

C# 解析省份、城市、区域 json文件

一、json文件内容如下&#xff0c;&#xff08;小程序里好像有用到...&#xff09;: 二、读取包含省份城市区域的json文件&#xff0c;并整理成想要的结果&#xff1a; string path Server.MapPath("/js"); string file System.IO.Path.Combine(path, "数据.…

数字孪生技术在元宇宙的应用

数字孪生技术与元宇宙有着天然的契合性&#xff0c;两者在技术、应用场景等方面都具有高度的互补性。数字孪生技术可以为元宇宙提供逼真、实时的数据模型和场景&#xff0c;而元宇宙可以为数字孪生技术提供广阔的应用平台和场景。北京木奇移动技术有限公司&#xff0c;专业的软…

从零开始学习深度学习库-5:自动微分(续)

引言 欢迎来到这个从头开始构建深度学习库系列的第5部分。这篇文章将介绍库中自动微分部分的代码。自动微分在上一篇文章中已经讨论过了&#xff0c;所以如果你不知道自动微分是什么&#xff0c;请查看一下。 自动微分系统的核心是计算图&#xff0c;这是一种有向图&#xff…

仅在少数市场发售?三星Galaxy Z Fold 6 Slim折叠屏手机更轻更薄

在智能手机的创新之路上&#xff0c;三星一直是行业的领跑者之一。随着Galaxy Z Fold系列的不断进化&#xff0c;三星再次突破技术边界&#xff0c;推出了更为轻薄的Galaxy Z Fold 6 Slim。 这款新型折叠屏手机以其独特的设计和卓越的性能&#xff0c;为用户带来了全新的使用体…

浅谈RLHF---人类反馈强化学习

浅谈RLHF&#xff08;人类反馈强化学习&#xff09; RLHF&#xff08;Reinforcement Learning fromHuman Feedback&#xff09;人类反馈强化学习 RLHF是[Reinforcement Learning from Human Feedback的缩写&#xff0c;即从人类反馈中进行强化学习。这是一种结合了机器学习中…

java实现资产管理系统图形化用户界面

创建一个&#x1f495;资产管理系统的GUI&#xff08;图形用户界面&#xff09;❤️画面通常需要使用Java的Swing或者JavaFX库。下面我将提供一个简单的资产管理系统GUI的示例代码&#xff0c;使用Java Swing库来实现。这个示例将包括一个主窗口&#xff0c;一个表格来显示资产…

SD card知识总结

一、基础知识 1、简介 SD Card 全称(Secure Digital Memory Card)&#xff0c;日本电子公司松下&#xff08;Panasonic&#xff09;、瑞典公司爱立信&#xff08;Ericsson&#xff09;、德国公司西门子&#xff08;Siemens&#xff09;共同开发的&#xff0c;于1999年发布根…

网络文件系统—NFS

目录 一、概述 二、NFS挂载原理 三、NFS相关协议及软件安装管理 1.协议&#xff1a; 2.软件&#xff1a; 四、NFS系统守护进程 五、NFS服务器的配置 六、NFS服务器的启动与停止 1. 启动NFS服务器 2.查询NFS服务器状态 3.停止NFS服务器 4.设置NFS服务器的自动启动状…

Redis的配置优化、数据类型、消息队列

文章目录 一、Redis的配置优化redis主要配置项CONFIG 动态修改配置慢查询持久化RDB模式AOF模式 Redis多实例Redis命令相关 二、Redis数据类型字符串string列表list集合 set有序集合sorted set哈希hash 三、消息队列生产者消费者模式发布者订阅者模式 一、Redis的配置优化 redi…

【java计算机毕设】网上购书管理系统MySQL servlet JSP项目设计源代码 期末寒暑假作业 小组作业

目录 1项目功能 2项目介绍 3项目地址 1项目功能 【java计算机毕设】网上购书管理系统MySQL servlet JSP项目设计源代码 期末寒暑假作业 小组作业 2项目介绍 系统功能&#xff1a; servlet网上购书管理系统包括管理员、用户两种角色。 管理员功能包括订单管理&#xff08;已…

pytorch中一些最基本函数和类

1.Tensor操作 Tensor是PyTorch中最基本的数据结构&#xff0c;类似于NumPy的数组&#xff0c;但可以在GPU上运行加速计算。 示例&#xff1a;创建和操作Tensor import torch# 创建一个零填充的Tensor x torch.zeros(3, 3) print(x)# 加法操作 y torch.ones(3, 3) z x y pr…

放大电路中的反馈

一、基本概念 根据反馈的效果可以区分反馈的极性&#xff0c;使基本放大电路净输入量增强的反馈为正反馈&#xff0c;使基本放大电路净输入量减弱的反馈为负反馈。 二、判断反馈极性 瞬时极性法&#xff1a;首先规定电路输入信号在某一时刻对地的极性&#xff0c;并逐级判断电…

Arch升级后启动变慢

systemd-analyze blame refector.service 耗时2分钟&#xff01; 安全检查&#xff1a;检测镜像速度排序写入源&#xff0c;这个更新时运行不就行了&#xff0c;没必要每次启动时运行啊&#xff01; 禁止服务&#xff1a;systemctl disable reflector.service