分类 默认分类 下的文章

云与虚拟化——实验4 构建镜像

实验4-1 利用Docker commit构建带sshd服务自定义镜像

1.1 拉取镜像,并安装ssh,生成秘钥生成镜像

# 拉取镜像
docker pull centos:7
# 启动一个容器
docker run -itd --name centos_sshd centos:7 bash
# 在容器里启动bash,并且显示出来
docker exec -it centos_sshd bash

image-20231019142535047

进入容器:

#切换镜像源到cernet
sed -e 's|^mirrorlist=|#mirrorlist=|g' \
         -e 's|^#baseurl=http://mirror.centos.org/centos|baseurl=https://mirrors.cernet.edu.cn/centos|g' \
         -i.bak \
         /etc/yum.repos.d/CentOS-*.repo
#安装sshd,以下在容器里进行
yum -y install openssh-server net-tools
mkdir -pv /var/run/sshd
#启动脚本
echo "/usr/sbin/sshd -D" > /auto_sshd.sh
#查看文件
cat /auto_sshd.sh
#给执行权限
chmod +x /auto_sshd.sh
#修改密码:
echo "root:123456" | chpasswd
#生成秘钥:一路回车哦
ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key

image-20231019142808785

image-20231019142844134

再生成俩秘钥

ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key
ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key
#退出容器
exit

image-20231019143109874

构建镜像:

docker commit centos_sshd centos7_sshd:1.0
            当前的containerd  目标镜像:TAG信息
docker images

image-20231019143810378

1.2测试容器是否可用:

docker run -itd --name centos_7.0-1 centos7_sshd:1.0
docker ps

成功

image-20231019143858385

测试SSH是否可用

#               containerID  执行的软体
docker exec -it c43a bash
# 查看IP
ifconfig
# CTRL + P +Q 挂起退出或者直接ctrl+X

#上面两行也可以直接执行:
docker exec -it centos_7.0-1 ifconfig

#启动SSH服务
docker exec -itd centos_7.0-1 八省/auto_sshd.sh

image-20231019144028627

image-20231019150408738

1.3连接SSH

#这里填你的IP
ssh root@172.17.0.6
#密码:123456

image-20231019144712817

image-20231019150738368

1.4查看镜像/Container信息

docker inspect centos7_sshd:1.0

image-20231019145506707

2 帮助:

# 删除全部容器
docker rm -f $(docker ps -aq)
#         force  -a全部 -q只显示id

# SSH无法连接删除这个文件:
rm -rf ./.ssh/known_hosts

实验4-2 利用Dockerfile构建带sshd服务的自定义镜像

3.1Dockerfile 构建centos7_sshd:1.0

新建个目录:

mkdir -pv /opt/centos_sshd
cd /opt/centos_sshd
vi Dockerfile

把这个文件塞进去

# 使用CERNET镜像源的CentOS 7作为基础镜像
FROM centos:7
MAINTAINER dayi 
# 切换镜像源到CERNET
RUN sed -e 's|^mirrorlist=|#mirrorlist=|g' \
        -e 's|^#baseurl=http://mirror.centos.org/centos|baseurl=https://mirrors.cernet.edu.cn/centos|g' \
        -i.bak \
        /etc/yum.repos.d/CentOS-*.repo
# 安装必要的软件包
RUN yum -y install openssh-server net-tools && \
    mkdir -pv /var/run/sshd && \
    echo "/usr/sbin/sshd -D && nohup" > /auto_sshd.sh && \
    chmod +x /auto_sshd.sh && \
    echo "root:123456" | chpasswd && \
    ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N '' && \
    ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N '' && \
    ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N ''
# 暴露SSH端口
EXPOSE 22
# 启动SSH服务
CMD ["bash","/auto_sshd.sh"]

image-20231019151206964

3.2构建镜像

构建!

cd /opt/centos_sshd
#构建
docker build -t centos7_sshd:2.0 .
#查看镜像
docker images

image-20231019151719703

3.3 启动!

docker run -itd --name centos7_ssh_2 centos7_sshd:2.0
docker exec -it centos7_ssh_2 ifconfig

image-20231019153533889

连接试试:

ssh root@172.17.0.2
123456

image-20231019153635632

3.4 启动失败

# 删除全部容器
docker rm -f $(docker ps -aq)
#         force  -a全部 -q只显示id

# SSH无法连接删除这个文件:
rm -rf ./.ssh/known_hosts

协议分析——实验七 利用Wireshark分析ICMP

地址:

软件准备

似乎不用准备什么东东,可以开机的电脑和系统就可以啦

先看看实验报告:

在实验报告中回答下面问题:
(1)查看ICMP echo 分组,是否这个分组和前面使用 ping命令的ICMP echo 一样?
(2)查看ICMP错误分组,它比ICMP echo 分组包括的信息多。ICMP错误分组比ICMP echo 分组多包含的信息有哪些?
(3)尝试使用ping –f命令产生icmp报文,并观察分析。

1.设计能捕获多种ICMP报文的实验步骤。
2.记录并分析截获的数据包。

这样的话就可以啦

照着实验步骤来就好。

推荐一个小软件:Best Trace 下载地址:https://www.ipip.net/product/client.html#besttrace

image-20231014214219998

1、ping 和 ICMP

利用Ping程序产生ICMP分组。Ping向因特网中的某个特定主机发送特殊的探测报文并等待表明主机在线的回复。具体做法:

(1)打开Windows命令提示符窗口(Windows Command Prompt)。
(2)启动Wireshark 分组嗅探器,在过滤显示窗口(filter display window)中输入icmp,开始Wireshark 分组俘获。
(3)输入“ping –n 10 hostname” 。其中“-n 10”指明应返回10条ping信息。
(4)当ping程序终止时,停止Wireshark分组俘获。

这个感觉照做就好

image-20231014214525371

打开软体哦,然后双击捕获的适配器。

输入ICMP

image-20231014214553088

然后在cmd里面ping就好

ping -n 10 a.dayiyi.top

image-20231014214649938

image-20231014214640437

大概也就这个样子
image-20231014215127976

咱集群内网包太多就不放文件了(几秒14M的流量),有用的不到20K。、

TYPE 0 CODE8

echo req 分组

image-20231014221830120

TYPE0 CODE 0

echo reply分组

image-20231014221849571

image-20231014221043250

2、ICMP和Traceroute

(1) 启动Window 命令提示符窗口

(2) 启动Wireshark分组嗅探器,开始分组俘获。

(3) Tracert命令在c:\windows\system32下,所以在MS-DOS 命令提示行或者输入“tracert hostname” or “c:\windows\system32\tracert hostname” (注意在Windows 下, 命令是 “tracert” 而不是“traceroute”。)如图4所示:

(4)当Traceroute 程序终止时,停止分组俘获。

推荐使用联通的流量或者宽带,其他的网络结果不明显

准备命令:

tracert a.dayiyi.top

开始捕获

这个过程比较慢

image-20231014221230953

你会发现TTL会越来越长

image-20231014221300067

image-20231014221521619

BEST TRACE

也可以试试BEST trace

image-20231014221546607

同样的,直接追踪就好

image-20231014222255341

回答问题

(1) 查看ICMP echo 分组,是否这个分组和前面使用 ping命令的ICMP echo 一样?

可以看到这里的分组跟之前有点区别了。

image-20231014225538616

REQ会出现无回应的情况,也就是wireshark没有找到相应的回应。

image-20231014230433677

同时也会出现TTL exceeded的情况

(2) 查看ICMP错误分组,它比ICMP echo 分组包括的信息多。ICMP错误分组比ICMP echo 分组多包含的信息有哪些?

包含了当前节点的IP信息,也就是当前路由的IP信息,通过一定的计算可以计算出相应的访问时间。

(3)尝试使用ping –f命令产生icmp报文,并观察分析。

-f 在数据包中设置“不分段”标记(仅适用于 IPv4)。

image-20231014231953064

如果拉大:

image-20231014232035182

3、实验报告

1.设计能捕获多种ICMP报文的实验步骤。

除了wireshark,还可以直接在网关上干

Linux下:

tcpdump host 39.105.181.66 -w cap.cap

image-20231014233925377

image-20231014234431375

image-20231014234447585

2.记录并分析截获的数据包。

image-20231014234504982

正常的ICMP啦

image-20231014234552944

回应

image-20231014234706415

文件下载

https://pic.icee.top/blog/dl_files/traceroute_sdust_filter_75e13846-16df-4061-9147-c281f920065d.pcapng

image-20231014235241923

计算机组成原理1——认识logisim软件、门电路逻辑功能测试

实验名称

认识logisim软件、门电路逻辑功能测试

实验目的

熟悉Logisim仿真软件的使用环境。

了解基本逻辑门的使用:与、或、非和Logisim的基本操作。

实验原理

Logisim是一种用于设计和模拟数字逻辑电路的教育工具。凭借其简单的工具栏界面和构建它们时的电路仿真,它非常简单,有助于学习与逻辑电路相关的最基本概念。由于能够从较小的子电路构建更大的电路,并通过鼠标拖动来绘制电线束,因此可以使用Logisim来设计和仿真用于相关课程的教学目的。

实验材料

Logisim软件

实验过程

打开附logisim使用手册,了解软件界面和功能。

实验1 门电路绘制

打开附logisim使用手册,了解软件界面和功能。

任务1:依照使用手册手工绘制电路图如下:(改变输入查看输出结果,查看真值表)

画一下:

image-20231009191814227

查看真值表:

查看表达式:

image-20231014192944222

电路为异或电路

增加电路:

image-20231009193348901

表达式:

image-20231014193052757

真值表:

image-20231014193111497

任务2——在logisim的管理窗口完成2-4译码器电路图的绘制,并分别用自动仿真、和单步仿真验证其逻辑功能

画一个:

image-20231009194406425

查看真值表:

image-20231009194832657

查看表达式:

image-20231014193323525

逻辑功能(点点,也正常)

image-20231014193347854

3-8译码器:

image-20231009200347911

任务3.新建电路,修改其真值表,与2-4为译码器一样,然后建立电路,生成逻辑门电路

生成一个2-4译码器:

image-20231014193736281

image-20231014193744345

输出:

image-20231014193819760

真值表改成这个:

image-20231014193847658

查看表达式:

image-20231014193859005

image-20231014193923961

可以看到已经正常建立:

2-4译码器

image-20231014194246038

2-4 译码器2输入

image-20231014194141807

2-4译码器与非:

image-20231014194117916

3-8 译码器

一样的

image-20231014194313882

image-20231014194355056

改下真值表:

image-20231014194537522

生成1:

image-20231014194626517

生成2(2逻辑门):

image-20231014194649123

生成3(与非门):

image-20231014194740755

生成4:(与非二逻辑门)

image-20231014194807163

逻辑正常:

image-20231014195236814

半加器:

image-20231009204557688

全加器:

image-20231014195059055

image-20231014195153837

image-20231014195202417

任务4:二路选择器(1位)

输入端:X0, X1, Sel

输出端:Out

功能描述:当Sel端为0时,输出X0,当Sel端为1时,输出X1

建立电路并分析逻辑

image-20231014200808291

表达式:

image-20231014200914485

真值表:

image-20231014200920135

逻辑1:

image-20231014200932551

逻辑2:

image-20231014200942588

OUT = x0 ~SEL + X1 X1 SEL

OUT = x0 ~SEL + X1 SEL

任务5:生成电路

给定逻辑表达式:Out1=A xor B+B xor C+ A xor C

Out2=A&B+B&C+C&A

直接生成就好:

image-20231014201151675

image-20231014201147614

输入:A xor B+B xor C + A xor C

image-20231014201221402

输入:A B + A C + B C

image-20231014201558766

image-20231014201405203

文件下载

image-20231014201902182

https://p.dabbit.net/blog/dl_files/实验1-文件_6ec3be49-9f94-4c3f-8efb-a6f5fe3f55ba.rar

虚拟化及容器_课上实验

实验1

下载使用虚拟机

然后快照回溯到init

网络:

推荐改为NAT模式:

开机就好啦

实验1 安装和使用Docker

登录名:

root
openstack

步骤1、2 关闭防火墙和SELinux

systemctl stop firewalld
systemctl disable firewalld
systemctl status firewalld

# 关闭SELinux
setenforce 0
# i 进入输入模式,ESC+:wq 退出编辑模式
vi /etc/selinux/config

把SELINUX 改为:
SELINUX=disabled

步骤3 修改网卡配置信息

可能更简单方法

nmtui

改信息:

改成自动然后删掉IP

【俩ESC】
reboot

登录后输入

ip addr

这个就是IP地址啦

修改DNS

vi /etc/sysconfig/network-scripts/ifcfg-ens33

加入DNS1=114.114.114.114

重启下网络

测试与外网的连通性。

[root@node-a ~]# ping -c 4 www.sina.com.cn
PING ww1.sinaimg.cn.w.alikunlun.com (27.221.120.196) 56(84) bytes of data.
64 bytes from 27.221.120.196 (27.221.120.196): icmp_seq=1 ttl=128 time=1.07 ms
64 bytes from 27.221.120.196 (27.221.120.196): icmp_seq=2 ttl=128 time=0.348 ms
64 bytes from 27.221.120.196 (27.221.120.196): icmp_seq=3 ttl=128 time=0.553 ms
64 bytes from 27.221.120.196 (27.221.120.196): icmp_seq=4 ttl=128 time=0.449 ms

--- ww1.sinaimg.cn.w.alikunlun.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 4015ms
rtt min/avg/max/mdev = 0.348/0.606/1.074/0.279 ms
[root@node-a ~]#

SSH连接

在cmd里

ssh root@192.168.59.128 (这里是你的ip)

输入yes

4.更新yum仓库信息

yum -y update

5. 配置时间同步

yum –y install ntpdate
ntpdate ntp.aliyun.com

6 7 8. 安装docker

yum remove docker docker-common docker-selinux docker-engine
yum install -y yum-utils device-mapper-persistent-data lvm2

# 中科大镜像源
yum-config-manager --add-repo http://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo

yum makecache fast

选择并且安装

yum list docker-ce --showduplicates | sort -r
``

安装

yum install –y docker-ce.x86_64 3:24.0.6-1.el7


![](https://cmd.dayi.ink/uploads/upload_a654c8e4ce819f4d5d481ee944fe23fb.png)

![](https://cmd.dayi.ink/uploads/upload_3dca66f686398038d50b9bf533f008c7.png)


### 11.开机自启、开机启动

systemctl start docker
systemctl enable docker


![](https://cmd.dayi.ink/uploads/upload_374bc6ff87835c737c063161c599b027.png)

### 12. 查看docker进程

ps -ef | grep docker
docker version


![](https://cmd.dayi.ink/uploads/upload_5b36fbc33e369422a852b053eedab946.png)

[root@node-a ~]# ps -ef | grep docker
root 2024 1 0 15:29 ? 00:00:00 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
root 2171 1452 0 15:30 pts/0 00:00:00 grep --color=auto docker
[root@node-a ~]# docker version
Client: Docker Engine - Community
Version: 24.0.6
API version: 1.43
Go version: go1.20.7
Git commit: ed223bc
Built: Mon Sep 4 12:35:25 2023
OS/Arch: linux/amd64
Context: default

Server: Docker Engine - Community
Engine:
Version: 24.0.6
API version: 1.43 (minimum version 1.12)
Go version: go1.20.7
Git commit: 1a79695
Built: Mon Sep 4 12:34:28 2023
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.24
GitCommit: 61f9fd88f79f081d64d6fa3bb1a0dc71ec870523
runc:
Version: 1.1.9
GitCommit: v1.1.9-0-gccaecfc
docker-init:
Version: 0.19.0
GitCommit: de40ad0
[root@node-a ~]#



### 12.镜像加速器

vi /etc/docker/daemon.json

i 输入
ESC -> :wq 保存

{
"registry-mirrors": ["https://x3n9jrcg.mirror.aliyuncs.com"]
}


![](https://cmd.dayi.ink/uploads/upload_83185599d7289864d5da05dc792fe0bb.png)


### 13. 重启docker

[root@node-a ~]# systemctl daemon-reload
[root@node-a ~]#
[root@node-a ~]# systemctl restart docker
[root@node-a ~]#


![](https://cmd.dayi.ink/uploads/upload_6c5bc74d6a968102224245487a28d5d8.png)


### 14. 下载镜像以便于测试

docker run -dit -p 80:80 nginx:latest

![](https://cmd.dayi.ink/uploads/upload_5a55d20f185bce2cb0d635832eb351f5.png)

打开网页测试:
![](https://cmd.dayi.ink/uploads/upload_d487078c811d28840d7c12c5a7a53ac6.png)