当前位置: 首页 > news >正文

网络安全 Day31-运维安全项目-容器架构下

容器架构下

  • 6. Dockerfile
    • 6.1 Docker自动化DIY镜像之Dockerfile
      • 1) 环境准备
      • 2) 书写Dockerfile内容
      • 3) 运行Dockerfile生成镜像
      • 4) 运行容器
      • 5) 小结
    • 6.2 案例14:Dockerfile-RUN指令
      • 1) 书写Dockerfile
      • 2) 构建镜像
      • 3) 启动容器
      • 4) 测试结果
    • 6.3 Dockerfile指令
  • 7. 容器数据持久化
    • 1)演示:
      • a)启动数据库容器
      • b)连接容器创建库
      • c)删除容器,重新创建容器检查数据是否还在?
    • 2)数据持久化
    • 3)小结:
  • 8. 容器镜像的私有仓库
    • 1) 拉取registry镜像与修改配置文件
    • 2)启动镜像仓库
    • 3) 上传镜像到私有的镜像仓库
    • 4) 删除本地镜像
    • 5) 重新拉取
    • 6)小结

6. Dockerfile

6.1 Docker自动化DIY镜像之Dockerfile

  • 通过上个案例(手动创建镜像)发现很麻烦所以用dockerfile自动化创建镜像
  • 这里我们就可以使用Dockerfile文件方法把定义镜像的流程,根据Dockerfile指令指定,最终生成我们想要的自定义镜像
  • 目标:
    • 1️⃣会使用Dockerfile
    • 2️⃣掌握如何书写Dockerfile
  • 任务要求:通过Dockerfile一键创建小鸟飞飞的镜像。

1) 环境准备

  1. 创建目录:mkdir -p /server/dockerfiles/01-bird
  2. 上传文件:上传bird.zip到linux(/root/即可)
  3. 解压:unzip bird.zip
  4. 复制文件到目录中:cp -a bird /server/dockerfiles/01-bird

2) 书写Dockerfile内容

  • 梳理自定义bird镜像的流程(对镜像的操作)
自定义镜像流程步骤Dockerfile指令
1️⃣选择基础镜像 nginx:1.24FROM nginx:1.24
2️⃣把bird代码传输到
/usr/share/nginx/html/目录下。
通过Dockerfile处理的
文件或目录放在Dockerfile所在目录。
ADD bird/ /usr/share/nginx/html/
ADD 宿主机目录或文件 镜像目录
3️⃣完成CMD指令
  • Dockerfile
    #1. Dockerfile所在目录结构drwxr-xr-x 3 root root  98 1116 2021 bird        #Dockerfile需要的bird目录
    -rw-r--r-- 1 root root 239 814 09:31 Dockerfile #Dockerfile文件#2. 编辑Dockerfile
    vim Dockerfile 
    #指定基础镜像
    FROM nginx:1.24 #镜像的说明信息
    LABEL author=lidao996 url=www.oldboyedu.com#传输内容
    ADD bird/   /usr/share/nginx/html/#指定容器入口指令
    #用于启动ngx服务
    CMD ["nginx","-g","daemon off;"]
    

3) 运行Dockerfile生成镜像

  • 进入Dockerfile所在目录:cd /server/dockerfiles/01-bird/
  • 生成镜像命令:docker build -t oldboydir:lidao996_bird_diy_v2 .
    • -t tag标签,用于指定新镜像的分类:名字_版本
    • . 指定Dockerfile就在当前目录

4) 运行容器

  1. 根据新的镜像启动容器:docker run -d -p 12306:80 --name bird_diy_v2 oldboydir:lidao996_bird_diy_v2
  2. 检查容器运行情况:docker ps |grep bird_diy_v2
  3. 浏览器检查:登录10.0.0.62:12306

5) 小结

  • Dockerfile作用与指令。
  • 一般根据手动的步骤,把步骤转行为Dockerfile.
  • 开头部分
    • FROM
    • LABEL
  • 中间过程
    • ADD/COPY
  • 结尾部分
    • CMD

6.2 案例14:Dockerfile-RUN指令

  • 创建一个nginx自定义镜像,镜像首页文件内容要是oldboyedu.com.
  • echo命令修改文件内容。echo oldboyedu.com >/usr/share/nginx/html/index.html
  • 创建自定义镜像的时候执行Linux命令。

1) 书写Dockerfile

mkdir -p /server/dockerfiles/02-ngx
cd /server/dockerfiles/02-ngxvim Dockerfile 
FROM nginx:1.24
LABEL author=lidao996  url=www.oldboyedu.com RUN echo oldboyedu.com >/usr/share/nginx/html/index.htmlCMD ["nginx","-g","daemon off;"]

2) 构建镜像

docker build -t oldboydiy:test_v2  .

3) 启动容器

docker run -d -p  10086:80 oldboydiy:test_v2

4) 测试结果

在这里插入图片描述

6.3 Dockerfile指令

Dockerfile指令含义应用建议
Dockerfile开头部分
FROM指定基本镜像类似于docker pull下载镜像FROM ubuntu:20.04尽量少写ubuntu或ubuntu:latest,尽量指定具体的版本.
LABEL用于指定容器的属性信息,作者,个人联系方式(邮件)…LABEL maintainer=“lidao996 youjiu_linux@qq.com”推荐使用LABEL,不推荐使用下面的MAINTAINER
ENV用于创建Dockerfile中使用的变量ENV Tengine_Version空格2.3.3软件版本可以创建使用变量.
Dockerfile中间处理部分
RUN制作镜像过程中需要的执行命令,通常系统配置,服务配置,部署。
但不能出现阻塞当前终端的命令。
RUN 系统命令即可.不建议使用连续多个RUN,合并连续多个RUN.
ADD可以把指定文件或目录拷贝到容器中(指定目录),会解压压缩包.
相对于当前目录.
ADD restart.tar.gz空格/app/code/restart/拷贝压缩包使用.
COPY可以把指定文件或目录拷贝到容器中(指定目录),不支持自动解压.
相对于当前目录.
COPY nginx.conf空格 /etc/nginx/nginx.conf拷贝文件或目录.
Dockerfile结尾部分书写的内容
CMD用于指定容器的入口命令.入口命令可以在docker run的时候替换.==运行镜像启动容器的时候,容器默认运行的命令是什么.CMD [“命令”,“参数01”,“参数02”]
CMD [“nginx”,“-g”,“daemon off;”]
大部分都会使用CMD.

7. 容器数据持久化

1)演示:

a)启动数据库容器

docker run  -d -p 13306:3306   --name mysql_8.0_v3   -e  MYSQL_ROOT_PASSWORD=1    mysql:8.0-debian 

b)连接容器创建库

  • 进入到数据库创建数据库

c)删除容器,重新创建容器检查数据是否还在?

  • 数据丢失

2)数据持久化

  • 把容器中的文件或目录连接到宿主机中。
  • 把宿主机的/server/data/mysql/目录连接到容器中/var/lib/mysql/
  1. 准备宿主机的数据目录:mkdir -p /server/data/mysql/
  2. 使用-v参数连接宿主机与容器(-v 宿主机的目录或文件:容器中的目录或文件,把宿主机中的目录或文件挂载(连接)到容器中。)
    docker run  -d -p 13306:3306   --name mysql_8.0_v3   -e  MYSQL_ROOT_PASSWORD=1  \
    -v  /server/data/mysql/:/var/lib/mysql/  mysql:8.0-debian 
    
  3. 检查结果:/server/data/mysql/下增加了很多文件
  4. 进入容器创建库:docker exec -it mysql_8.0_v3 mysql -uroot -p1 #这样可以直接进入数据库
  5. 创建库:create database lidao996;
  6. 退出然后删除容器:docer rm -f mysql_8.0_v3
  7. 重新创建容器并检查库是否还在
docker run  -d -p 13306:3306   --name mysql_8.0_v3   -e  MYSQL_ROOT_PASSWORD=1  \
-v  /server/data/mysql/:/var/lib/mysql/  mysql:8.0-debian docker exec -it  mysql_8.0_v3  mysql -uroot -p1  #这样可以直接进入数据库
show databases;  #数据库还在

3)小结:

  • 理解什么是容器的数据持久化即可。为何要做持久化。
  • docker run 加上-v选项
  • 应用数据库数据目录做做持久化。
  • 用于测试代码:nginx /usr/share/nginx/html/连接到宿主机的代码目录。
  • 用于测试配置:nginx.conf ,my.cnf 配置文件。

8. 容器镜像的私有仓库

  • registry仓库(简单,命令行),harbor仓库(复杂,web界面)。

1) 拉取registry镜像与修改配置文件

  1. 拉镜像:docker pull registry
  2. 修改所有docker配置文件
    cat >  /etc/docker/daemon.json<<'EOF'
    {"registry-mirrors": ["https://bjjtv7cs.mirror.aliyuncs.com"],"insecure-registries": ["10.0.0.62:5000"]
    }
    EOF
    systemctl restart docker
    

2)启动镜像仓库

mkdir -p /server/data/images/
docker run -d  --name "oldboy_registry"   -p 5000:5000 \
-v /server/data/images/:/var/lib/registry  \
--restart=always registry

3) 上传镜像到私有的镜像仓库

docker tag  oldboydir:lidao996_bird_diy_v2     10.0.0.62:5000/oldboyedu/ngx:bird_diy_v2
#docker login -u用户名 -p密码
docker push 10.0.0.62:5000/oldboyedu/ngx:bird_diy_v2 

4) 删除本地镜像

docker rmi 镜像名字
如果镜像使用中则需要删除镜像对应的容器,然后删除镜像。

5) 重新拉取

docker pull 10.0.0.62:5000/oldboyedu/ngx:bird_diy_v2

6)小结

  • 未来使用内部私有镜像仓库。

    • 会通过docker tag +docker push 上传。

    • 会通过docker pull 下载即可。

相关文章:

网络安全 Day31-运维安全项目-容器架构下

容器架构下 6. Dockerfile6.1 Docker自动化DIY镜像之Dockerfile1) 环境准备2) 书写Dockerfile内容3&#xff09; 运行Dockerfile生成镜像4) 运行容器5) 小结 6.2 案例14&#xff1a;Dockerfile-RUN指令1) 书写Dockerfile2) 构建镜像3) 启动容器4) 测试结果 6.3 Dockerfile指令 …...

如何给a-table增加列宽拖动功能

对于table的列宽设置 相信用过的人都知道&#xff0c;想要设置得很完美&#xff0c;几乎是不现实的&#xff0c;因为总有数据或长或短&#xff0c;那我们应该如何优化它呢&#xff1f;那便是让用户自行拖动列宽&#xff0c;从而能看全table的数据&#xff0c;但是对于antd-vue …...

Labview选项卡之实现被选择选项卡工作

文章目录 前言一、使用选项卡二、实现被选择选项卡工作1、需求2、分析3、实现①、前面板②、程序框图 三、效果展示四、源码自取 前言 有些时候&#xff0c;我们做界面&#xff0c;需要好多个界面切换。如果是同一个 VI 里界面切换&#xff0c;一般都是选项卡了。切换不同选项…...

【Image captioning】ruotianluo/self-critical.pytorch之1—数据集的加载与使用

【Image captioning】ruotianluo/self-critical.pytorch之1—数据集的加载与使用 作者&#xff1a;安静到无声 个人主页 数据加载程序示意图 使用方法 示例代码 #%%from __future__ import absolute_import from __future__ import division from __future__ import print_…...

研发工程师玩转Kubernetes——就绪探针(Readiness Probe)和服务(Service)

在《研发工程师玩转Kubernetes——启动、存活和就绪探针》中&#xff0c;我们讲了就绪探针和服务之间的特殊关系。就绪探针检测失败并不代表整个程序处于“非存活”状态&#xff0c;可能只是短暂临时的不可以提供服务&#xff0c;比如CPU阶段性占满&#xff0c;导致就绪探针检测…...

最新Kali Linux安装教程:从零开始打造网络安全之旅

Kali Linux&#xff0c;全称为Kali Linux Distribution&#xff0c;是一个操作系统(2013-03-13诞生)&#xff0c;是一款基于Debian的Linux发行版&#xff0c;基于包含了约600个安全工具&#xff0c;省去了繁琐的安装、编译、配置、更新步骤&#xff0c;为所有工具运行提供了一个…...

excel填数据转json格式

定制化比较严重&#xff0c;按需更改 excel文件如下 代码 # -*- coding: utf-8 -*- import oss2 import shutil import sys import xlwt import xlrd import json from datetime import datetime, timedeltafile1 "C:\\Users\\cxy\\Desktop\\generate.xls" #打开表…...

解决echarts和v-show一起使用canvas宽高改变

本来是想没有数据显示暂无数据的&#xff0c;结果显示成了这样 1.把V-show改成v-if <template><divclass"chart1"ref"chart1"v-if"!nodata"style"width: 100%; height: 100%"></div><el-empty description&quo…...

typescript 中的数据类型有哪些?

目录 1. 介绍2.总结 话不多说 直接开冲 干干干&#xff01; 1. 介绍 typescript 的数据类型主要有如下&#xff1a; boolean&#xff08;布尔类型&#xff09;number&#xff08;数字类型&#xff09;string&#xff08;字符串类型&#xff09;array&#xff08;数组类型&…...

计算机网络 应用层 C/S方式(客户/服务方式) P2P方式(对等方式)

...

RabbitMQ-消息中间件学习记录(what-how-why)

什么是消息中间件 简单的来说就是消息队列中间件&#xff0c;生产者发送消息到中间件&#xff0c;消息中间件用于保存消息并发送消息到消费者。 消息中间件RabbitMQ的基本组件 1&#xff09;producer -生产者 2&#xff09;customer -消费者 3&#xff09;broker (经纪人)- MQ…...

前端HTML进阶

day02&#xff1a;列表、表格、表单 目标&#xff1a;掌握嵌套关系标签的写法&#xff0c;使用列表标签布局网页 01-列表 作用&#xff1a;布局内容排列整齐的区域。 列表分类&#xff1a;无序列表、有序列表、定义列表。 无序列表 作用&#xff1a;布局排列整齐的不需要规…...

Python“牵手”lazada商品详情页数据采集方法,lazadaAPI接口申请指南

lazada详情接口 API 是开放平台提供的一种 API 接口&#xff0c;它可以帮助开发者获取商品的详细信息&#xff0c;包括商品的标题、描述、图片等信息。在电商平台的开发中&#xff0c;详情接口API是非常常用的 API&#xff0c;因此本文将详细介绍详情接口 API 的使用。 一、la…...

买机票系统---(java实现)

/* * 案例 * 卖机票 * 需求&#xff1a;机票价格按照淡季和旺季&#xff0c;头等舱和经济舱收费&#xff0c;输入机票原价&#xff0c;月份和头等舱或经济舱 * 旺季&#xff08;5-10月&#xff09;&#xff1a;头等舱9折&#xff0c;经济舱8.5折 * 淡季&#xff08;11-来年4月&…...

“new出对象“原理的深层解密

&#x1f388;个人主页:&#x1f388; :✨✨✨初阶牛✨✨✨ &#x1f43b;推荐专栏1: &#x1f354;&#x1f35f;&#x1f32f;C语言初阶 &#x1f43b;推荐专栏2: &#x1f354;&#x1f35f;&#x1f32f;C语言进阶 &#x1f511;个人信条: &#x1f335;知行合一 &#x1f…...

Java基础篇--SecureRandom(安全随机)类

java.security.SecureRandom类是Java中用于生成安全的随机数的一个类。与普通的Random类不同&#xff0c;它提供了一种可信赖的随机数生成器&#xff0c;用于生成具有高度随机性的随机数。 SecureRandom类的实例使用了更加安全的随机数生成算法&#xff0c;这些算法通常经过密…...

论文复现--关于多视角动作捕捉工具箱 --XRMoCap的研究

分类&#xff1a;动作捕捉 github地址&#xff1a;https://github.com/openxrlab/xrmocap 所需环境&#xff1a; Ubuntu18.04&#xff0c;conda22.9.0&#xff0c;CUDA11.4 目录 环境配置 环境配置 conda create -n XRmocap python3.7 -y conda activate XRmocap# install ffm…...

Spring Profile与PropertyPlaceholderConfigurer实现项目多环境配置切换

最近考虑项目在不同环境下配置的切换&#xff0c;使用profile注解搭配PropertyPlaceholderConfigurer实现对配置文件的切换&#xff0c;简单写了个demo记录下实现。 基本知识介绍 Profile Profile通过对bean进行修饰&#xff0c;来限定spring在bean管理时的初始化情况&#…...

ansible入门

ansible入门 一.ansible 背景介绍 Ansible 是一个广受欢迎的 IT 自动化系统。可以用来处理配置管理、应用自动化部署、云资源配给、网络 自动化和多借点部署等任务。其也可以使得复杂的变更如带负载均衡的零停机滚动更新更加容易。Ansible.com 1.1 自动化运维概念 1.1.1 运维…...

用Node.js吭哧吭哧撸一个运动主页

简单唠唠 某乎问题&#xff1a;人这一生&#xff0c;应该养成哪些好习惯&#xff1f; 问题链接&#xff1a;https://www.zhihu.com/question/460674063 如果我来回答肯定会有定期运动的字眼。 平日里也有煅练的习惯&#xff0c;时间久了后一直想把运动数据公开&#xff0c;…...

ubuntu搭建nfs服务centos挂载访问

在Ubuntu上设置NFS服务器 在Ubuntu上&#xff0c;你可以使用apt包管理器来安装NFS服务器。打开终端并运行&#xff1a; sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享&#xff0c;例如/shared&#xff1a; sudo mkdir /shared sud…...

从零实现富文本编辑器#5-编辑器选区模型的状态结构表达

先前我们总结了浏览器选区模型的交互策略&#xff0c;并且实现了基本的选区操作&#xff0c;还调研了自绘选区的实现。那么相对的&#xff0c;我们还需要设计编辑器的选区表达&#xff0c;也可以称为模型选区。编辑器中应用变更时的操作范围&#xff0c;就是以模型选区为基准来…...

MFC内存泄露

1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...

大数据零基础学习day1之环境准备和大数据初步理解

学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 &#xff08;1&#xff09;设置网关 打开VMware虚拟机&#xff0c;点击编辑…...

网络编程(UDP编程)

思维导图 UDP基础编程&#xff08;单播&#xff09; 1.流程图 服务器&#xff1a;短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...

企业如何增强终端安全?

在数字化转型加速的今天&#xff0c;企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机&#xff0c;到工厂里的物联网设备、智能传感器&#xff0c;这些终端构成了企业与外部世界连接的 “神经末梢”。然而&#xff0c;随着远程办公的常态化和设备接入的爆炸式…...

群晖NAS如何在虚拟机创建飞牛NAS

套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...

Bean 作用域有哪些?如何答出技术深度?

导语&#xff1a; Spring 面试绕不开 Bean 的作用域问题&#xff0c;这是面试官考察候选人对 Spring 框架理解深度的常见方式。本文将围绕“Spring 中的 Bean 作用域”展开&#xff0c;结合典型面试题及实战场景&#xff0c;帮你厘清重点&#xff0c;打破模板式回答&#xff0c…...

提升移动端网页调试效率:WebDebugX 与常见工具组合实践

在日常移动端开发中&#xff0c;网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时&#xff0c;开发者迫切需要一套高效、可靠且跨平台的调试方案。过去&#xff0c;我们或多或少使用过 Chrome DevTools、Remote Debug…...

Linux入门课的思维导图

耗时两周&#xff0c;终于把慕课网上的Linux的基础入门课实操、总结完了&#xff01; 第一次以Blog的形式做学习记录&#xff0c;过程很有意思&#xff0c;但也很耗时。 课程时长5h&#xff0c;涉及到很多专有名词&#xff0c;要去逐个查找&#xff0c;以前接触过的概念因为时…...