网络安全 Day30-运维安全项目-容器架构上
容器架构上
- 1. 什么是==容器==
- 2. 容器 vs 虚拟机(化) :star::star:
- 3. Docker极速上手指南
- 1)使用rpm包安装docker
- 2) docker下载镜像加速的配置
- 3) 载入镜像大礼包(老师资料包中有)
- 4. Docker使用案例
- 1) 案例01::star::star::star::star::star:启动nginx:1.24镜像并通过宿主机8848端口访问
- 2) 案例02: :star:docker run背后原理
- 3) 案例03::star::star::star::star::star:查看容器
- 4)案例04::star::star::star::star::star:删除容器
- 5) 案例05:启动数据库容器
- 6) 案例06: :star::star::star::star::star:进入运行中的容器
- 7) 案例07: 容器的自启动
- 8)案例08:查看镜像
- 9) 案例09:拉取镜像
- 10)案例10:删除镜像
- 11)案例11:启动系统镜像
- 12) 小结
- 5. Docker初步自定义镜像
- 1)启动ngx容器
- 2) 连接到容器中
- 3)进行测试
- 4)保存镜像
- 5)根据新的镜像创建容器并测试
1. 什么是容器
- 容器是隔离的环境中运行的一个进程,如果进程结束,容器就会停止.
- 细致:容器的隔离环境,拥有自己的ip地址,系统文件,主机名,进程管理,相当于一个mini的操作系统.
2. 容器 vs 虚拟机(化) ⭐️⭐️
虚拟机(虚拟化) | 容器 | |
---|---|---|
优点 | 1. 使用简单 2. 也有成熟管理工具,vmware esxi,KVM,Openstack 3. 可以随意定制. 4. 启动虚拟机要经历完整的Linux启动流程 | 1. 快速部署(扩容,弹性伸缩) 2. 大部分环境都有现成镜像 3. 让我们不再关注系统基础设施,把关注点放在配置,升级,优化 4. 不依赖硬件 5. 启动容器秒级. 6. 相当于一个进程 |
缺点 | 1. 需要硬件支持虚拟化技术(VT-X) 2. 资源利用率不高 3. 同一台虚拟跑多个服务,可能有冲突 4. 占用资源较多. 5. 不满足目前升级,快速扩容,快速部署,回滚不方便. | 1. 使用较为复杂 2. 共享linux系统内核,推荐使用较新linux内核. |
3. Docker极速上手指南
Linux内核: 3.10以上. 如果旧的内核需要升级内核才能使用.
- 安装docker环境,docker-ce(开源) docker-ee(企业版)
docker环境 | ip | 配置 |
---|---|---|
oldboy-docker | 10.0.0.62/172.16.1.62 | 2c4G(至少1c2G) |
1)使用rpm包安装docker
-
解压oldboyedu_docker_24_rpms.tar.gz(老师资料包中):
tar xf oldboyedu_docker_24_rpms.tar.gz
-
进入目录并安装rpm包
cd docker_24_rpms/ yum localinstall -y *.rpm
-
检查是否安装成功
rpm -qa |grep docker docker-compose-plugin-2.19.1-1.el7.x86_64 docker-ce-cli-24.0.4-1.el7.x86_64 docker-buildx-plugin-0.11.1-1.el7.x86_64 docker-ce-rootless-extras-24.0.4-1.el7.x86_64 docker-ce-24.0.4-1.el7.x86_64
- 【后面工作中可以用】配置docker源(用于安装docker)
#1.安装相关依赖.
sudo yum install -y yum-utils#2.下载官方的docker yum源文件
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo#3.替换yum源地址
sed -i 's+https://download.docker.com+https://mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo#4.安装docker-ce
yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin#5.启动
systemctl enable --now docker #6.检查
docker version 检查
2) docker下载镜像加速的配置
我们使用docker的时候需要下载很多docker的镜像.为了加速下载,需要配置docker加速.
-
docker下载镜像加速
阿里云,腾讯云有加速用的地址.
-
阿里云为例,说明如何获取加速用的地址
- 创建目录:
sudo mkdir -p /etc/docker
- 修改配置docker下载镜像的加速地址(/etc/docker/daemon.json docker服务端的配置文件.)
sudo tee /etc/docker/daemon.json <<-'EOF' {"registry-mirrors": ["https://bjjtv7cs.mirror.aliyuncs.com"] } EOF
- 开机自启动与重启
sudo systemctl daemon-reload sudo systemctl restart docker sudo systemctl enable docker
3) 载入镜像大礼包(老师资料包中有)
#解压大礼包的oldboyedu_useful_docker_images_v2.tar.gz
tar xf oldboyedu_useful_docker_images_v2.tar.gz#批量导入
cd oldboyedu_useful_docker_images/
for n in `ls` ;
do docker load -i $n
done
4. Docker使用案例
1) 案例01:⭐️⭐️⭐️⭐️⭐️启动nginx:1.24镜像并通过宿主机8848端口访问
- 使用本地已有的镜像(nginx:1.24),如果没有则从远程下载。
- 运行镜像(进程,容器)
- 设置访问的端口8848(宿主机)访问容器中的80端口。
- 浏览器访问10.0.0.62:8848 访问容器的80端口。
docker run -d -p 8848:80 --name nginx_v1 nginx:1.24
6f34a5df3a4049423c18ca606bbd3ae05caca4b111804d7aee598c842bd3056dss -lntup|grep 8848
tcp LISTEN 0 128 *:8848 *:* users:(("docker-proxy",pid=3680,fd=4))
tcp LISTEN 0 128 [::]:8848 [::]:* users:(("docker-proxy",pid=3686,fd=4))
- 浏览器访问:http://10.0.0.62:8848
- 命令与参数
命令 作用 docker run 运行容器 -d 后台运行 – name 指定名字,容器名字不能冲突。如果不指定就会随机分配名字 - p 端口映射 宿主机端口,指定用容器和宿主机的端口进行关联
2) 案例02: ⭐️docker run背后原理
3) 案例03:⭐️⭐️⭐️⭐️⭐️查看容器
docker ps #只显示运行中的容器。docker ps -a #查看所有状态的容器关闭,退出,。。。。
- 启动mysql:8.0-debian
#1 启动mysql 8.0容器
docker run -d --name mysql_8.0 -p 13306:3306 mysql:8.0-debian
7d2dc00806dd9ea73638c8ff49a333c408a50c0eab2435b424f5763a102f73ae#2 查看运行中容器,发现没有mysql-8.0容器 docker ps |grep mysql #3. 查看所有状态的容器 发现mysql-8.0是exit退出状态。
docker ps -a
4)案例04:⭐️⭐️⭐️⭐️⭐️删除容器
docker rm 容器名字或id #删除已经关闭,退出,非运行容器。
docker rm -f #强制删除,删除运行中的容器。docker rm -f mysql_8.0
5) 案例05:启动数据库容器
- 数据库容器需要额外的参数(变量)。
- 需要通过-e参数设置MYSQL_ROOT_PASSWORD
#1. 启动数据库容器
docker run -d -p 13306:3306 --name mysql_8.0_v2 -e MYSQL_ROOT_PASSWORD=1 mysql:8.0-debian #2. 检查容器状态
docker ps |grep mysql #3. 如果没有则通过ps -a 查看
docker ps -a |grep mysql
6) 案例06: ⭐️⭐️⭐️⭐️⭐️进入运行中的容器
- 温馨提示:进入到运行中的容器。
#连接进入mysql容器
docker exec -it mysql_8.0_v2 /bin/bash#连接进入nginx容器
docker exec -it nginx_v1 /bin/bash
可以修改首页文件然后访问测试。
连接后可以执行:
du -sh /
和cat /etc/os-release
查看一些容器信息。
- 小结:
- 核心掌握如何进入运行中的容器。
- exec
- -it 交互模式分配终端(命令行)
- /bin/bash进不去可以改为/bin/sh
7) 案例07: 容器的自启动
重启docker服务后容器都是退出状态(关闭)
通过docker start 一个一个启动容器。
docker start nginx_v3 docker run 的时候加上--restart=always,设置容器什么时候自动运行。
docker run -d -p 8850:80 --restart=always --name nginx_v4 nginx:1.24
通过systemctl restart docker 测试
8)案例08:查看镜像
docker images === docker image ls
9) 案例09:拉取镜像
- 从镜像仓库中下载镜像。
docker pull nginx:alpinedocker images |grep nginx
nginx 1.24 b6c621311b44 5 weeks ago 142MB
nginx 1.24-alpine 55ba84d7d539 8 weeks ago 41.1MB
nginx alpine cc44224bfe20 19 months ago 23.5MB
nginx latest 605c77e624dd 19 months ago 141MB
10)案例10:删除镜像
docker rmi openjdk:10
注意要把名字和后边的数字连起来
11)案例11:启动系统镜像
#1.
docker run -itd --name centos_7_v1 centos:7
#2.
docker ps |grep centos
加上-it即可。
12) 小结
docker镜像操作 | 指令 |
---|---|
查看 | docker images |
下载 | docker pull |
删除 | docker rmi(如果镜像有对应的容器,则无法删除。 |
Docker容器操作 | 指令 | 参数 |
---|---|---|
启动容器 | docker run | -d -p –name --restart -e -itd |
查看容器 | docker ps | -a |
删除容器 | docker rm | -f |
进入容器 | docker exec | -it xxx /bin/bash或/bin/sh |
5. Docker初步自定义镜像
目标:我们找到的镜像无法直接瞒足我们的需求。
解决:自定义镜像。
- 任务目标:nginx镜像包含bird代码,小鸟飞飞代码,选择nginx:1.24。bird.zip
1)启动ngx容器
#1.启动
docker run -d -p 8080:80 --name bird_v1 nginx:1.24#2.检查
docker ps |grep bird
2) 连接到容器中
- 窗口1:链接到容器中
docker exec -it bird_v1 /bin/bash
- 窗口2
- 发送bird目录下面的代码到容器中的站的目录 /usr/share/nginx/html/
unzip bird.zip cd bird/
- 发送bird目录下面的代码到容器中的站的目录 /usr/share/nginx/html/
- 上传,把宿主机中的文件上传到容器中:
docker cp . bird_v1:/usr/share/nginx/html/
#上传:docker cp 宿主机目录或文件 容器名:容器路径 ※※※※※
#下载:docker cp 容器名:容器路径 宿主机目录或文件
3)进行测试
- http://10.0.0.62:8080/
- 测试成功表示:
- nginx服务是ok.
- nginx+代码也是ok.
4)保存镜像
- 把已经的容器保存成镜像。
- 把容器保存成镜像
- 语法:
docker commit 容器名字 分类:名字版本
- 保存:
docker commit bird_v1 oldboydiy:lidao_bird_v1
- 语法:
- 检查是否有镜像:
docker images |grep lidao
5)根据新的镜像创建容器并测试
docker run -d -p 8081:80 --name diy_bird_v1 oldboydiy:lidao_bird_v1
相关文章:

网络安全 Day30-运维安全项目-容器架构上
容器架构上 1. 什么是容器2. 容器 vs 虚拟机(化) :star::star:3. Docker极速上手指南1)使用rpm包安装docker2) docker下载镜像加速的配置3) 载入镜像大礼包(老师资料包中有) 4. Docker使用案例1) 案例01::star::star::…...
深入理解设计模式-创建型之单例模式
为什么要使用单例 1、表示全局唯一 如果有些数据在系统中应该且只能保存一份,那就应该设计为单例类。 如:配置类:在系统中,我们只有一个配置文件,当配置文件被加载到内存之后,应该被映射为一个唯一的【配…...
Vue中路由缓存问题及解决方法
一.问题 Vue Router 允许你在你的应用中创建多个视图,并根据路由来动态切换这些视图。默认情况下,当你从一个路由切换到另一个路由时,Vue Router 会销毁前一个路由的组件实例并创建新的组件实例。然而,有时候你可能希望保持一些页…...

Linux与bash(基础内容一)
一、常见的linux命令: 1、文件: (1)常见的文件命令: (2)文件属性: (3)修改文件属性: 查看文件的属性: ls -l 查看文件的属性 ls …...

NVIDIA Omniverse与GPT-4结合生成3D内容
全球各行业对 3D 世界和虚拟环境的需求呈指数级增长。3D 工作流程是工业数字化的核心,开发实时模拟来测试和验证自动驾驶车辆和机器人,操作数字孪生来优化工业制造,并为科学发现铺平新的道路。 如今,3D 设计和世界构建仍然是高度…...

Windows Server --- RDP远程桌面服务器激活和RD授权
RDP远程桌面服务器激活和RD授权 一、激活服务器二、设置RD授权 系统:Window server 2008 R2 服务:远程桌面服务 注:该方法适合该远程桌面服务器没网络状态下(离线),激活服务器。 一、激活服务器 1.打开远…...
关于游戏盾
游戏盾(Game Shield)是一种针对游戏行业特点的网络安全解决方案,主要针对游戏平台面临的各种网络攻击和安全威胁。以下是一些原因,说明为什么游戏平台需要加游戏盾: 1. DDoS攻击:游戏平台通常容易受到分布式…...

回归预测 | MATLAB实现基于SSA-KELM-Adaboost麻雀算法优化核极限学习机结合AdaBoost多输入单输出回归预测
回归预测 | MATLAB实现基于SSA-KELM-Adaboost麻雀算法优化核极限学习机结合AdaBoost多输入单输出回归预测 目录 回归预测 | MATLAB实现基于SSA-KELM-Adaboost麻雀算法优化核极限学习机结合AdaBoost多输入单输出回归预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本…...

《cpolar内网穿透》外网SSH远程连接linux(CentOS)服务器
本次教程我们来实现如何在外公网环境下,SSH远程连接家里/公司的Linux CentOS服务器,无需公网IP,也不需要设置路由器。 视频教程 [video(video-jrpesBrv-1680147672481)(type-csdn)(url-CSDN直播https://live-file.csdnimg.cn/release/live/…...

IDEA启动报错【java.sql.SQLSyntaxErrorException: ORA-00904: “P“.“PRJ_NO“: 标识符无效】
IDEA报错如下: 2023-08-17 11:26:15.535 ERROR [egrant-biz,b48324d82fe23753,b48324d82fe23753,true] 24108 --- [ XNIO-1 task-1] c.i.c.l.c.RestExceptionController : 服务器异常org.springframework.jdbc.BadSqlGrammarException: ### Error queryin…...

Nginx详解
1、高并发时代 单台tomcat在理想情况下可支持的最大并发数量在200~500之间,如果大于这个数量可能会造成响应缓慢甚至宕机。 解决方案是通过多台服务器分摊并发压力,这不仅需要有多台tomcat服务器,还需要一台服务器专门用来分配请求。这既是…...
摸清一下mysql授权语句的实际执行关系
样例 ---------------------------------------------------------------------- grant all PRIVILEGES on db1.* to test% identified by test1; grant all PRIVILEGES on db2.* to test% identified by test2; grant all PRIVILEGES on db3.* to test127.0.0.1 identified …...

sCrypt于8月12日在上海亮相BSV数字未来论坛
2023年8月12日,由上海可一澈科技有限公司(以下简称“可一科技”)、 临港国际科创研究院发起,携手美国sCrypt公司、福州博泉网络科技有限公司、复旦大学区块链协会,举办的BSV数字未来论坛在中国上海成功落下帷幕。 本次…...

Hbase的列式存储到底是什么意思?一篇文章让你彻底明白
一、 HBase 定义 Apache HBase™ 是以 hdfs 为数据存储的,一种分布式、可扩展的 NoSQL 数据库。 二、 HBase 数据模型 HBase 的设计理念依据 Google 的 BigTable 论文,论文中对于数据模型的首句介绍。 Bigtable 是一个稀疏的、分布式的、持久的多维排…...

机器学习|Softmax 回归的数学理解及代码解析
机器学习|Softmax 回归的数学理解及代码解析 Softmax 回归是一种常用的多类别分类算法,适用于将输入向量映射到多个类别的概率分布。在本文中,我们将深入探讨 Softmax 回归的数学原理,并提供 Python 示例代码帮助读者更好地理解和…...

EmbedPress Pro 在WordPress网站中嵌入任何内容
EmbedPress Pro可让您通过高级自定义、自定义品牌、延迟加载和更多惊人功能嵌入源。为古腾堡块和Elementor编辑器提供支持的一体化 WordPress 嵌入解决方案。使用 EmbedPress 在古腾堡创建交互式内容。使用 EmbedPress 的古腾堡块立即将任何内容嵌入到您的网站。 网址: EmbedP…...

【C++学习手札】一文带你初识C++继承
食用指南:本文在有C基础的情况下食用更佳 🍀本文前置知识: C类 ♈️今日夜电波:napori—Vaundy 1:21 ━━━━━━️💟──────── 3:23 …...
【ubuntu18.04】01-network-manager-all.yaml和interfaces和resolv.conf各有什么区别和联系
文章目录 01-network-manager-all.yaml、interfaces 和 resolv.conf 是与网络配置相关的文件,它们在网络设置中有着不同的作用和使用方式。 01-network-manager-all.yaml: 这是一个配置文件,通常在 Ubuntu 系统上使用 NetworkManager 进行网络管理时使用…...

24近3年内蒙古大学自动化考研院校分析
今天给大家带来的是内蒙古大学控制考研分析 满满干货~还不快快点赞收藏 一、内蒙古大学 学校简介 内蒙古大学位于内蒙古自治区首府、历史文化名城呼和浩特市,距北京400余公里,是中华人民共和国成立后党和国家在民族地区创办的第一所综合大…...

大语言模型(LLM)与 Jupyter 连接起来了
现在,大语言模型(LLM)与 Jupyter 连接起来了! 这主要归功于一个名叫 Jupyter AI 的项目,它是官方支持的 Project Jupyter 子项目。目前该项目已经完全开源,其连接的模型主要来自 AI21、Anthropic、AWS、Co…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试
作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...

python执行测试用例,allure报乱码且未成功生成报告
allure执行测试用例时显示乱码:‘allure’ �����ڲ����ⲿ���Ҳ���ǿ�&am…...
Pinocchio 库详解及其在足式机器人上的应用
Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库,专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性,并提供了一个通用的框架&…...
使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度
文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...
Go 并发编程基础:通道(Channel)的使用
在 Go 中,Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式,用于在多个 Goroutine 之间传递数据,从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...
省略号和可变参数模板
本文主要介绍如何展开可变参数的参数包 1.C语言的va_list展开可变参数 #include <iostream> #include <cstdarg>void printNumbers(int count, ...) {// 声明va_list类型的变量va_list args;// 使用va_start将可变参数写入变量argsva_start(args, count);for (in…...

MySQL:分区的基本使用
目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区(Partitioning)是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分(分区)可以独立存储、管理和优化,…...

nnUNet V2修改网络——暴力替换网络为UNet++
更换前,要用nnUNet V2跑通所用数据集,证明nnUNet V2、数据集、运行环境等没有问题 阅读nnU-Net V2 的 U-Net结构,初步了解要修改的网络,知己知彼,修改起来才能游刃有余。 U-Net存在两个局限,一是网络的最佳深度因应用场景而异,这取决于任务的难度和可用于训练的标注数…...
Python网页自动化Selenium中文文档
1. 安装 1.1. 安装 Selenium Python bindings 提供了一个简单的API,让你使用Selenium WebDriver来编写功能/校验测试。 通过Selenium Python的API,你可以非常直观的使用Selenium WebDriver的所有功能。 Selenium Python bindings 使用非常简洁方便的A…...

2025-05-08-deepseek本地化部署
title: 2025-05-08-deepseek 本地化部署 tags: 深度学习 程序开发 2025-05-08-deepseek 本地化部署 参考博客 本地部署 DeepSeek:小白也能轻松搞定! 如何给本地部署的 DeepSeek 投喂数据,让他更懂你 [实验目的]:理解系统架构与原…...