网络安全 Day30-运维安全项目-容器架构上

news2024/11/26 8:21:40

容器架构上

  • 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-docker10.0.0.62/172.16.1.622c4G(至少1c2G)

1)使用rpm包安装docker

  1. 解压oldboyedu_docker_24_rpms.tar.gz(老师资料包中):tar xf oldboyedu_docker_24_rpms.tar.gz

  2. 进入目录并安装rpm包

    cd docker_24_rpms/
    yum localinstall -y *.rpm 
    
  3. 检查是否安装成功

    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下载镜像加速

    阿里云,腾讯云有加速用的地址.

  • 阿里云为例,说明如何获取加速用的地址

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  1. 创建目录:sudo mkdir -p /etc/docker
  2. 修改配置docker下载镜像的加速地址(/etc/docker/daemon.json docker服务端的配置文件.)
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
      "registry-mirrors": ["https://bjjtv7cs.mirror.aliyuncs.com"]
    }
    EOF
    
  3. 开机自启动与重启
    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 
6f34a5df3a4049423c18ca606bbd3ae05caca4b111804d7aee598c842bd3056d

ss -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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jTv7AeMH-1691892607336)(assets/image-20230811085033860.png)]

  • 命令与参数
    命令作用
    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:alpine

docker 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
    1. 发送bird目录下面的代码到容器中的站的目录 /usr/share/nginx/html/
      unzip bird.zip 
      cd bird/
      
  1. 上传,把宿主机中的文件上传到容器中:docker cp . bird_v1:/usr/share/nginx/html/
    #上传:docker cp 宿主机目录或文件 容器名:容器路径 ※※※※※
    #下载:docker cp 容器名:容器路径 宿主机目录或文件

3)进行测试

  • http://10.0.0.62:8080/
  • 测试成功表示:
    • nginx服务是ok.
    • nginx+代码也是ok.

4)保存镜像

  • 把已经的容器保存成镜像。
  1. 把容器保存成镜像
    1. 语法:docker commit 容器名字 分类:名字版本
    2. 保存:docker commit bird_v1 oldboydiy:lidao_bird_v1
  2. 检查是否有镜像:docker images |grep lidao

5)根据新的镜像创建容器并测试

docker run -d -p 8081:80    --name diy_bird_v1   oldboydiy:lidao_bird_v1

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OLED透明屏售价:通过真实数据和研究报告的说服力分析

随着科技的不断发展&#xff0c;OLED透明屏的应用越来越广泛&#xff0c;因其高色彩饱和度、更快的响应速度和更广的视角&#xff0c;OLED透明屏成为了许多消费者的选择。 但是&#xff0c;OLED透明屏的售价是怎么样的呢&#xff1f;售价的影响因素是什么&#xff1f;如何判断…

蒸散发ET及其组分、植被总初级生产力GPP概念和碳水耦合基本原理丨Penman-Monteith模型冠层导度、蒸散发组分计算

目录 一、蒸散发与光合作用阻抗&Python实践 二、ArcGIS实践应用 三、数据处理实践 四、冠层导度与水、碳通量空间模拟案例分析实践 更多推荐 熟悉蒸散发ET及其组分&#xff08;植被蒸腾Ec、土壤蒸发Es、冠层截留Ei&#xff09;、植被总初级生产力GPP的概念和碳水耦合的…

搭建一个能与大家分享的旅游相册网站——“cpolar内网穿透”

如何用piwigo与cpolar结合共同搭建一个能分享的旅行相册网站 文章目录 如何用piwigo与cpolar结合共同搭建一个能分享的旅行相册网站前言1. 使用piwigo这款开源的图片管理软件2. 需要将piwigi网页复制到phpstudy3. “开始安装”进入自动安装程序4. 创建新相册5. 创建一条空白数据…

Apache Doris 2.0.0 版本正式发布:盲测性能 10 倍提升,更统一多样的极速分析体验

亲爱的社区小伙伴们&#xff0c;我们很高兴地向大家宣布&#xff0c;Apache Doris 2.0.0 版本已于 2023 年 8 月 11 日正式发布&#xff0c;有超过 275 位贡献者为 Apache Doris 提交了超过 4100 个优化与修复。 在 2.0.0 版本中&#xff0c;Apache Doris 在标准 Benchmark 数…

【第三讲-三维空间刚体运动】

旋转矩阵 点、向量、坐标系 坐标系分为左左手系和右手系 下面讨论有关向量的运算&#xff1a; 内积 外积&#xff1a; 外积的结果是一个向量&#xff0c;方向垂直于这两个向量&#xff0c;大小为

Intellij IDEA SBT依赖分析插件

可分析模块和传递依赖 安装完插件后&#xff0c;由于IDEA BUG&#xff0c;会出现两个分析按钮&#xff0c;一个是gradle的&#xff0c;一般是后者是新安装的sbt。 选择需要分析的模块 只需要在project/plugins.sbt中添加代码&#xff0c;启动官方分析插件addDependencyTreeP…

一个步骤跳过 Unity 启动Logo | 多平台适用 | 官方API支持

前言【Unity实战篇 】 | 一个步骤跳过 Unity Logo 界面 | 多平台适用 | 官方API支持使用方法核心 API1. RuntimeInitializeOnLoadMethodAttribute2. SplashScreen效果展示总结前言 众所周知,使用Unity引擎打包的工程在启动时都带有Unity的默认启动Logo。这个问题可以通过购买U…

G6 图可视化引擎基本使用

const data1 {nodes: [{ id: 1, label: 采购申请, x: 100, y: 200, labelCfg: { style: { fill: red } } },{ id: 2, label: 采购申请, x: 300, y: 200 },{ id: 3, label: 采购申请关联表, x: 500, y: 200 },{ id: 4, label: 军事闭关, x: 700, y: 100 },{ id: 5, label: 文化…

控价有什么技巧吗

设置一个价格进行管控&#xff0c;简称控价&#xff0c;品牌做控价不光是为了自身利益&#xff0c;也是为了整个行业的健康和发展&#xff0c;同时控价还能保证经销商的利润&#xff0c;以及消费者的利益。如果品牌不控价&#xff0c;不管是新品发售还是常规品的销售&#xff0…

456. 132 模式

456. 132 模式 原题链接&#xff1a;完成情况&#xff1a;解题思路&#xff1a;参考代码&#xff1a;单调栈 原题链接&#xff1a; 456. 132 模式 https://leetcode.cn/problems/132-pattern/description/ 完成情况&#xff1a; 解题思路&#xff1a; /**解题思路&#xff…

内网搭建电影网站的实现和进行公网访问

如何实现内网搭建电影网站并进行公网访问 文章目录 如何实现内网搭建电影网站并进行公网访问前言1. 把软件分别安装到本地电脑上1.1 打开PHPStudy软件&#xff0c;安装一系列电影网站所需的支持软件1.2 设置MacCNS10的运行环境1.3 进入电影网页的安装程序1.4 对运行环境进行检测…

VSCode如何设置高亮

一、概述 本文主要介绍在 VSCode 看代码时&#xff0c;怎样使某个单词高亮显示&#xff0c;主要通过以下三步实现&#xff1a; 安装 highlight-words 插件 配置 highlight-words 插件 设置高亮快捷键F8 工作是嵌入式开发的&#xff0c;代码主要是C/C的&#xff0c;之前一直用…

通过网关访问微服务,一次正常,一次不正常 (nacos配置的永久实例却未启动导致)

微服务直接访问没问题&#xff0c;通过网关访问&#xff0c;就一次正常访问&#xff0c;一次401错误&#xff0c;交替正常和出错 负载均衡试了 路由配置检查了 最后发现nacos下竟然有2个order服务实例&#xff0c;我明明只开启了一个呀 原来之前的8080端口微服务还残留&…

PyQt5控件布局管理

Qt Designer提供了四种窗口布局&#xff1a;Vertical Layout(垂直布局) &#xff0c;Horizontal Layout(水平布局)&#xff0c;Grid Layout(栅格布局)&#xff0c;Form Layout(表单布局)&#xff0c;以及一种隐藏的布局—绝对布局 一般进行布局有两种方式&#xff1a; 一是通…

二次封装element-plus上传组件,提供校验、回显等功能

二次封装element-plus上传组件 0 相关介绍1 效果展示2 组件主体3 视频组件4 Demo 0 相关介绍 基于element-plus框架&#xff0c;视频播放器使用西瓜视频播放器组件 相关能力 提供图片、音频、视频的预览功能提供是否为空、文件类型、文件大小、文件数量、图片宽高校验提供图片…

Github标星98k,企业级Spring Boot项目开发实战笔记,太强了

准备又到了一年一度的金九银十招聘高峰期的时间&#xff0c;虽然这两年因为疫情以及经济环境不太好&#xff0c;互联网行业的各大厂都再裁员&#xff0c;但是今年下半年Java行情在慢慢的复苏&#xff0c;在慢慢的变好。 随着上半年病态卷的常态在慢慢的退去&#xff0c;互联网…

【Java】2021 RoboCom 机器人开发者大赛-高职组(初赛)题解

7-1 机器人打招呼 机器人小白要来 RoboCom 参赛了&#xff0c;在赛场中遇到人要打个招呼。请你帮它设置好打招呼的这句话&#xff1a;“ni ye lai can jia RoboCom a?”。 输入格式&#xff1a; 本题没有输入。 输出格式&#xff1a; 在一行中输出 ni ye lai can jia Robo…

【Linux】简单线程池的设计与实现 -- 单例模式

前言对锁的封装整体代码LockGuard - RALLRALLMutex封装 对线程创建的封装整体代码成员函数解释声明 业务处理封装-加减乘除&#xff08;可有可无&#xff09;整体代码成员函数解释声明 线程池的设计与实现整体代码成员函数解释声明 展示 前言 线程池: 一种线程使用模式。线程过…

Mybatis 源码 ∞ :杂七杂八

文章目录 一、前言二、TypeHandler三、KeyGenerator四、Plugin1 Interceptor2 org.apache.ibatis.plugin.Plugin3. 调用场景 五、Mybatis 嵌套映射 BUG1. 示例2. 原因3. 解决方案 六、discriminator 标签七、其他1. RowBounds2. ResultHandler3. MapKey 一、前言 Mybatis 官网…

无涯教程-Perl - seekdir函数

描述 此功能将DIRHANDLE中的当前位置设置为POS。 POS的值必须是Telldir先前返回的值。 seekdir()函数类似于Unix seekdir()系统调用。 语法 以下是此函数的简单语法- seekdir DIRHANDLE, POS返回值 如果失败,此函数返回0,如果成功,则返回1。 例 以下是显示其基本用法的…