网络安全 Day30-容器架构上

news2024/11/26 20:00:57

容器架构上

  • 1. 容器架构
    • 1.1 什么是==容器==
    • 1.2 容器 vs 虚拟机(化) :star::star:
    • 1.3 Docker极速上手指南
      • 1)使用rpm包安装docker
      • 2) docker下载镜像加速的配置
      • 3) 载入镜像大礼包(老师资料包中有)
    • 1.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) 小结
    • 1.5 Docker初步自定义镜像:案例12
      • 1)启动ngx容器
      • 2) 连接到容器中
      • 3)进行测试
      • 4)保存镜像
      • 5)根据新的镜像创建容器并测试

1. 容器架构

1.1 什么是容器

  • 容器是隔离的环境中运行的一个进程,如果进程结束,容器就会停止.
  • 细致:容器的隔离环境,拥有自己的ip地址,系统文件,主机名,进程管理,相当于一个mini的操作系统.

1.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内核.

1.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 

1.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

1.5 Docker初步自定义镜像:案例12

目标:我们找到的镜像无法直接瞒足我们的需求。

解决:自定义镜像。

  • 任务目标: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/872432.html

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

相关文章

第12集丨Vue 江湖 —— 内置指令

目录 一、v-text二、v-html2.1 基本使用2.2 cookie原理2.2.1 登入成功后cookies的信息2.2.2 手动增加cookie值2.2.3 cookie edit 三、v-cloak3.1 案例 四、v-once五、v-pre 到本节为止&#xff0c;我们学过的指令: v-bind &#xff1a;单向绑定解析表达式v-model &#xff1a;…

idea生成springboot单元测试用例

1、找到需要生成单元测试的类型&#xff0c;右键Go To -> Test 2、选择JUnit4 和勾选需要测试的方法 3、查看自动生成的文件 public class CategoryMapperTest {Testpublic void findById() {}Testpublic void queryById() {} } 4、添加测试代码 RunWith(SpringRunner.cla…

【JavaEE】懒人的福音-MyBatis框架—[单表]增删改查等常规操作

【JavaEE】MyBatis框架要点总结&#xff08;2&#xff09; 文章目录 【JavaEE】MyBatis框架要点总结&#xff08;2&#xff09;1. 单表查看操作1.1 (条件查询)通过id查找用户1.1.1 接口上声明方法1.1.2 xml文件中去实现方法1.1.3 测试 1.2 传递参数的重点问题&#xff1a;sql注…

【LeetCode周赛】LeetCode第358场周赛

LeetCode第358场周赛 数组中的最大数对和翻倍以链表形式表示的数字限制条件下元素之间的最小绝对差 数组中的最大数对和 给你一个下标从0开始的整数数组nums。请你从nums中找出和最大的一对数&#xff0c;且这两个数数位上最大的数字相等。 返回最大和&#xff0c;如果不存在满…

手机商城网站的分析与设计(论文+源码)_kaic

目录 摘 要 1 1 绪论 2 1.1选题背景意义 2 1.2国内外研究现状 2 1.2.1国内研究现状 2 1.2.2国外研究现状 3 1.3研究内容 3 2 网上手机商城网站相关技术 4 2.1.NET框架 4 2.2Access数据库 4 2.3 JavaScript技术 4 3网上手机商城网站分析与设…

基于grpc从零开始搭建一个准生产分布式应用(3) - GRPC实现

本章开始会进入GRPC子专题&#xff0c;先实现前面章节中提到的例子。然后就使用的知识点展开全面的描述。本章代码任务&#xff1a;1、实现一个简单的GRPC服务&#xff1b;2、实现GRPC拦截器。 本章的代码承接上一章的代码进行迭代。因模块间存在相互依赖关系&#xff0c;读者一…

SpringBoot复习:(42)WebServerCustomizer的customize方法是在哪里被调用的?

ServletWebServletAutoConfiguration类定义如下&#xff1a; 可以看到其中通过Import注解导入了其内部类BeanPostProcessorRegister。 BeanPostProcessor中定义的registerBeanDefinition方法会被Spring容器调用。 registerBeanDefinitions方法调用了RegistrySyntheticBeanIf…

【MongoDB】一文带你快速掌握MongoDB数据库和集合基础操作

文章目录 前言一、案例需求二、数据库操作1. 选择和创建数据库2. 数据库的删除 三、集合操作1. 集合的显式创建&#xff08;了解&#xff09;2. 集合的隐式创建3. 集合的删除 总结 前言 为了巩固所学的知识&#xff0c;作者尝试着开始发布一些学习笔记类的博客&#xff0c;方便…

pycorrector一键式文本纠错工具,整合了BERT、MacBERT、ELECTRA、ERNIE等多种模型,让您立即享受纠错的便利和效果

pycorrector&#xff1a;一键式文本纠错工具&#xff0c;整合了Kenlm、ConvSeq2Seq、BERT、MacBERT、ELECTRA、ERNIE、Transformer、T5等多种模型&#xff0c;让您立即享受纠错的便利和效果 pycorrector: 中文文本纠错工具。支持中文音似、形似、语法错误纠正&#xff0c;pytho…

激活函数总结(七):激活函数补充(Softsign、Threshold、Sinc)

激活函数总结&#xff08;七&#xff09;&#xff1a;激活函数补充 1 引言2 激活函数2.1 Softsign激活函数2.2 Threshold (Unit step activation function) 激活函数2.3 Sinc激活函数 3. 总结 1 引言 在前面的文章中已经介绍了介绍了一系列激活函数 (Sigmoid、Tanh、ReLU、Lea…

Java-运算符和控制语句(下)(基于c语言的补充)

输出到控制台 System.out.println(msg); // 输出一个字符串, 带换行 System.out.print(msg); // 输出一个字符串, 不带换行 System.out.printf(format, msg); // 格式化输出 从键盘输入 使用 Scanner 读取字符串/整数/浮点数 首先需要导入util包 自动导入util包 这里把回车看…

21-因子个数

题目 一个正整数可以分解成一个或多个数组的积。例如362*2*3*3&#xff0c;即包含2和3两个因子。NowCoder最近在研究因子个数的分布规律&#xff0c;现在给出一系列正整数&#xff0c;他希望你开发一个程序输出每个正整数的因子个数。 输入描述: 输入包括多组数据。 每组数…

Ubuntu22开机后正上方弹出“Printer addded(已添加打印)”等提示框

一、问题描述 Ubuntu22开机后正上方弹出“Printer addded&#xff08;已添加打印&#xff09;”等提示框。如下 二、问题分析 1、列出当前所有开机启动服务 service --status-all msmoshui:~$ service --status-all[ - ] alsa-utils[ - ] anacron[ ] apparmor[ ] app…

预测算法|改进粒子群算法优化极限学习机IDM-PSO-ELM

回归拟合&#xff1a; 分类 本文是作者的预测算法系列的第四篇&#xff0c;前面的文章中介绍了BP、SVM、RF及其优化&#xff0c;感兴趣的读者可以在作者往期文章中了解&#xff0c;这一篇将介绍——极限学习机 过去的几十年里基于梯度的学习方法被广泛用于训练神经网络&am…

全网最详细,Pytest自动化测试框架-Fixture固件实战,你要的都有...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 什么是固件 Fixt…

SpringBoot整合Redis完整篇

SpringBoot整合Redis完整篇 1、在springboot项目的pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schem…

用HARU-Net增强核分割:一种基于混合注意的残差u块网络

文章目录 Enhancing Nucleus Segmentation with HARU-Net: A Hybrid Attention Based Residual U-Blocks Network摘要本文方法损失函数后处理消融实验 Enhancing Nucleus Segmentation with HARU-Net: A Hybrid Attention Based Residual U-Blocks Network 摘要 核图像分割是…

B3716 分解质因子 3

#include <bitset> #include <vector> #include <iostream> #include <algorithm>const int maxn 100000008;std::vector<int> prm, pre; // pre is the min-factor array. bool np[maxn];void getPrime(const int N 100000000) {//线性筛&am…

Fast SAM与YOLOV8检测模型一起使用实现实例分割以及指定物体分割(有代码)

Fast SAM与YOLOV8检测模型一起使用 VX 搜索”晓理紫“ 关注并回复yolov8fastsam获取核心代码 晓理紫 1 使用场景 实例分割数据集的获取要比检测数据的获取更加困难&#xff0c;在已有检测模型不想从新标注分割数据进行训练但是又想获取相关物体的mask信息以便从像素级别对物体进…

Redis原理简述

Redis原理简述 Redis 有哪些特性 1. 特性 key-value 型内存数据库单线程——原子化操作支持lua脚本发布与订阅可持久化逐出与过期……2. 持久化 RDB:经过压缩的二进制文件;fork子进程进行操作AOF:保存所有写命令;先写缓存再同步至AOF文件;文件过大时会触发AOF重写3. 过期…