N46-第二次月考
第二阶段考试
一、判断题10道、一题3分
1、DNS默认端口号是多少?(D)
A、443 B、80 C、25 D、53
2、docker中以下哪个命令不正确?(B)
A、docker run B、docker file C、docker exec D、docker images
3、在shell脚本中以下哪个选项不是关键字(C)
A、if B、for C、watch D、while
4、打印/etc/passwd的奇数行?(A)
A、sed -n '1~2p' /etc/passwd
B、sed -c '1~2p' /etc/passwd
C、sed -n '1~3p' /etc/passwd
5、linux下查看服务程序占用的端口命令是什么?(B)
A、ps -aux B、netstat -apn C、watch D、lsof
6、在linux系统中,用来存放系统所需要的配置文件和子目录是(A)
A、/etc B、/var C、/root D、/home
7、(多选)下面哪些命令可以查看file1文件的第300-500行的内容?(B、C)
A、cat file1 | tail -n +300 | head -n 200
B、cat file1 | head -n 500 | tail -n +300
C、sed -n '300,500p' file1
8、linux下查看磁盘使用情况的命令是?(B)
A、dd B、df C、top D、netstat
9、linux查看系统活跃进程的命令是?(A)
A、ps B、netstat C、df D、ifconfig
10、在shell中变量的赋值有四种方法,其中,采用name=12的方法称(A)
A、直接赋值
B、使用read命令
C、使用命令行参数
D、使用命令的输出
二、填空题10道、一题3分。
1、在linux中,某文件的权限为:drw-r-r-,该权限数值形式表示为(644),修改文件权限用(chmod)命令
2、在linux系统中,以(挂载设备至目录)方式访问设备。
3、链接分为:(硬链接)和(软链接)。
4、(DHCP服务)可以实现动态IP地址分配。
5、DNS实际上是分布在internet上的主机信息的数据库,其作用是(主机名)和(IP地址)之间的转换。
6、当LAN内没有条件建立DNS服务器,但又想让局域网内的用户可以使用计算机名互相访问时,应配置(/etc/hosts)文件。
7、DHCP是动态主机配置协议的简称,其作用是:(仅用一台服务器为局域网内的所有客户机分配可使用的IP地址,并将IP地址统一的管理)。
8、唯一标识每一个用户的是(uid)和(用户名)。
9、docker和虚拟机的区别虚拟机有(自己的虚拟操作系统)
10、docker采用了一种(写时复制的机制)挂载的方式实现了可写层。
三、操作题,一共5道、一题8分。
1、简述Raid0、Raid1、Raid5、Raid10的区别?
答:
RAID 0让整个逻辑盘的数据被分布在多个物理磁盘上,可以并行读/写,提供最快的速度,
要求:至少2块磁盘。
优点:可以获得更大的单个逻辑盘的容量,并通过对多个磁盘的同时读取获得更高的存取速度,性能最佳。
缺点:但没有冗余能力,忽略了安全,只要其中一个磁盘出了问题,那么整个阵列的数据都会不保了,不能应用于对数据安全性要求高的场合。
容错:无。
RAID 1,磁盘镜像方式,也就是数据的冗余。
要求:至少2块磁盘。
优点:在整个镜像过程中,只有一半的磁盘容量是有效的(另一半磁盘容量用来存放同样的数据)。同RAID 0相比,RAID 1首先考虑的是安全性,容量减半、速度不变。
缺点:牺牲一半磁盘容量做为备份,性能一般。
容错:1块磁盘。
RAID 5的工作方式是将各个磁盘生成的数据校验切成块,分别存放到组成阵列的各个磁盘中去,
要求:至少3块磁盘。
优点:以奇偶校验作冗余,校验块分布到各个磁盘中。
缺点:在缓解了校验数据存放时所产生的瓶颈问题,但是分割数据及控制存放都要付出速度上的代价,是性能与数据冗余最佳的折中方案,适合多读少写的场景。
容错:1块磁盘。
RAID 10(即RAID 1+0):先做磁盘镜像,再做磁盘条带化分部。
要求:至少4块磁盘。
优点:兼顾冗余(提供镜像存储)和性能(数据条带形分布),集合了RAID 0、RAID 1的优点。
缺点:与RAID 1一样,牺牲一半磁盘容量做为备份。
容错:2块磁盘
2、通过shell脚本部署一个httpd服务。
答:
vim httpd.sh
#!/bin/bash
#
#********************************************************************
#Author: jiquanquan
#QQ: 298007250
#Date: 2020-08-12
#FileName: httpd.sh
#URL: http://www.example.com
#Description: The test script
#Copyright (C): 2020 All rights reserved
#********************************************************************
echo '########基础包下载########'
dnf install -y wget
dnf install -y gcc make autoconf apr-devel apr-util-devel pcre-devel openssl-devel redhat-rpm-config tar
echo '########下载apachectl源码包########'
#wget https://downloads.apache.org/httpd/httpd-2.4.46.tar.bz2
dnf install -y bzip2
echo '########解压缩apachectl源码包########'
tar -xvf httpd-2.4.46.tar.bz2 -C /usr/local/src/
cd /usr/local/src/httpd-2.4.46/
echo '########编译安装########'
./configure --prefix=/usr/local/httpd --sysconfdir=/etc/httpd --enable-ssl
make -j 4 && make install
echo '########后期配置########'
echo 'PATH=/usr/local/httpd/bin:$PATH' > /etc/profile.d/httpd.sh
source /etc/profile.d/httpd.sh
useradd -r -s /sbin/nologin -M -c apache -u 48 apache
sed -i s#"User daemon"#"User apache"#g /etc/httpd/httpd.conf
sed -i s#"Group daemon"#"Group apache"#g /etc/httpd/httpd.conf
apachectl
3、通过dockerfile实现nginx的部署
答:
#配置基础镜像
apt-get update
apt-get upgrade
apt-get -y install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
apt-get -y update
apt-get -y install docker-ce
#安装docker并配制阿里云加速
systemctl enable --now docker
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://xxxxxxxx.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker
# 从hub网站下载基础镜像
mkdir -p /data/base
docker pull centos:centos7.8.2003
cd /data/base
#定制自己使用的基础镜像
vim Dockerfile
FROM centos:centos7.8.2003
LABEL maintainer="jiquanquan<root@example.com>"
RUN yum -y install wget \
&& rm -f /etc/yum.repos.d/* \
&& wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/repo/Centos-7.repo \
&& wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/repo/epel-7.repo \
&& yum -y install vim-enhanced tcpdump lrzsz tree telnet bash-completion net-tools wget bzip2 lsof zip unzip nfs-utils gcc make gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel systemd-devel zlib-devel \
&& yum clean all \
&& rm -f /etc/localtime \
&& ln -s ../usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#构建基础镜像
vim build.sh
#!/bin/bash
docker build -t centos7-base:v1 .
#给构建脚本添加运行权限,并运行。
chmod +x build.sh
./build.sh
#生成定制版的基础镜像
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos7-base v1 f794f80a255d 8 minutes ago 399MB
centos centos7.8.2003 afb6fca791e0 3 months ago 203MB
#新建一模版机,并提取相关文件
yum -y install vim-enhanced tcpdump lrzsz tree telnet bash-completion net-tools wget bzip2 lsof zip unzip nfs-utils gcc make gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel systemd-devel zlib-devel
wget -P /usr/local/src http://nginx.org/download/nginx-1.16.1.tar.gz
cd /usr/local/src/
tar xvf nginx-1.16.1.tar.gz
cd nginx-1.16.1/
./configure --prefix=/app/nginx && make && make install
#传递nginx配制文件至docker主机上。
scp /app/nginx/conf/nginx.conf 192.168.98.141:/data/nginx/
#新建nginx目录,修改nginx配制文件,添加测试用的index.html文件
mkdir /data/nginx -p
vim nginx.conf
user www;
daemon off;
wget http://nginx.org/download/nginx-1.16.1.tar.gz
echo "Docker in nginx" > index.html
#配制nginx的Dockerfile文件
vim Dockerfile
FROM centos7-base:v1
LABEL maintainer="jiquanquan<root@example.com>"
ADD nginx-1.16.1.tar.gz /usr/local/src
RUN cd /usr/local/src/nginx-1.16.1 \
&& ./configure --prefix=/apps/nginx \
&& make && make install \
&& rm -rf /usr/local/src/nginx* \
&& useradd -r www
COPY nginx.conf /apps/nginx/conf/
COPY index.html /apps/nginx/html/
EXPOSE 80 443
CMD ["/apps/nginx/sbin/nginx"]
#构建定制的nginx镜像
vim build.sh
#!/bin/bash
docker build -t nginx-centos7:1.6.1 .
chmod +x build.sh
#构建镜像成功
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx-centos7 1.6.1 4a0c46431c2c 8 seconds ago 410MB
centos7-base v1 f794f80a255d 5 hours ago 399MB
centos centos7.8.2003 afb6fca791e0 3 months ago 203MB
#用docker run测试容器是否可以启动
docker run -d -p 80:80 nginx-centos7:1.6.1
2590796ff7004e59edd0c064e66f4e0a99874770cab0f075a0a9ed93ac6d44dc
4、简述TCP三次握手的过程?
答:
1、握手前,主动连接方(客户端)结束close状态,被动访问方(服务器端)也结束close状态,并进入listen状态,开始“三次握手”。
2、首先客户端向服务器端发送tcp报文,其中:
(1)标记位为syn,表示“请求建立新连接”。
(2)序号为seq=x(x一般为1)
(3)然后客户端进入syn-sent状态
3、服务器端接收到客户端发送的tcp报文后,结束listen状态,返回tcp报文,其中:
(1)标志位为syn和ack,表示“确认收到客户端有效的seq序号,服务器端正常接收客户端的数据,并创建新连接”
(2)序号为seq=y
(3)确认号为ack=x+1,表示收到客户端的序号seq,并其值+1作为自己的确认号ack的值,服务器进入到syn-rcvd状态。
4、客户端收到服务器端的确认数据后,确定了可以进行正常的数据传输,马上结束syn-sent状态,并返回tcp报文,其中:
(1)标志位为ack,表示“确认收到服务器端的连接信号”。
(2)序号为seq=x+1,表示收到服务器端的确认号ack,并将其值作为自己的序号值。
(3)确认号为ack=y+1,表示收到服务器端序号seq,并将其值作为自己的确认号ack的值。
(4)客户端进入established状态。
5、服务器端收到客户端的“确认收到服务器数据”的tcp报文后,确认从服务器端到客户端的数据传输是正常的。结束syn-sent状态,进入established状态。此时双方三次握手正式建立完成。
5、docker容器时间跟本地时间不一致怎样解决?
答:
1、进入容器中
docker exec -t -i {容器id} /bin/bash
2、邮件/etc/localtime文件
rm -f /etc/localtime \
3、建立软链接,Asia/Shanghai指向/etc/localtime
ln -s ../usr/share/zoneinfo/Asia/Shanghai /etc/localtime

浙公网安备 33010602011771号