马哥博客作业第二阶段考试
一、选择题
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下查看服务程序占用的端口命令是什么?( D )
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行的内容?( BC )
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 使用命令的输出
二、填空题
1、在linux中,某文件的权限为:drw-r--r--,该权限用数值形式表示为(),修改文件权限用()命令。
644 chmod
2、在Linux 系统 中,以()方式访问设备 。
磁盘挂载
3、链接分为:() 和 ()。
软链接和硬链接
4、()可以实现动态 IP 地址分配。
DHCP服务
5、DNS 实际上是分布在internet 上的主机信息的数据库 ,其作用是()和()之间的转换。
域名 IP地址
6、当LAN 内没有条件建立DNS 服务器,但又想让局域网内的用户可以使用计算机名互相访问时,应配置()文件。
/etc/hosts
7、DHCP 是动态主机配置协议的简称,其作用是:()。
实现动态IP地址分配
8、 唯一标识每一个用户的是()和()。
uid gid
9、docker和虚拟机的区别在于虚拟机有()。
虚拟机有自己的内核,docker共用宿主机的内核
10、docker采用了一种()挂载的方式实现了可写层。
写时复制
三、操作题
1、简述Raid0、Raid1、Raid5、Raid10的区别。
RAID0:读写性能提升,无容错能力,最少需要两块磁盘
RAID1:读性能提升,写性能略有下降,最少需要两块磁盘
RAID5:读写性能提升,有容错能力,最多允许一块磁盘损坏,最少需要三块磁盘
RAID10:读写性能提升,有容错能力,每组镜像最多只能坏一块磁盘
2、通过shell脚本部署一个httpd服务。
#!/bin/bash
echo -e "\e[32mstart install httpd\e[0m"
sleep 3
yum -y install httpd
sed -Ei 's/^#ServerName.*/ServerName localhost:80/' /etc/httpd/conf/httpd.conf
apachectl -t && systemctl enable --now httpd.service || echo "语法错误,请检查语法"
echo -e "\e[32mhttpd is installed\e[0m"
3、通过dockerfile实现nginx的部署。
1)、先制作基于基础镜像的centos系统镜像
下载基础镜像:docker pull centos:centos7.8.2003
制作Dockerfile文件:vim Dockerfile
FROM centos:centos7.8.2003
LABEL maintainer="wujianfu <root@www.com>"
RUN yum -y install wget && rm -rf /etc/yum.repos.d/* && wget -O /etc/yum.repos.d/CentOS-Base.repo \
https://mirrors.aliyun.com/repo/Centos-7.repo && wget -O /etc/yum.repos.d/epel.repo \
http://mirrors.aliyun.com/repo/epel-7.repo \
&& yum -y install vim-enhanced tcpdump lrzsz bash-completion tree telnet net-tools lsof iproute psmisc bzip2 nfs-utils \
&& rm -rf /var/cache/yum/* && rm -f /etc/localtime && ln -s ../usr/share/zoneinfo/Asia/Shanghai /etc/localtime
构建生成新的系统镜像:docker build -t centos7.8:v1.0 .
2)、制作nginx编译镜像
在Dockerfile目录下准备编译安装的相关文件:
wget http://nginx.org/download/nginx-1.18.0.tar.gz
编辑nginx配置文件,修改下面内容:vim nginx.conf
user nginx;
daemon off;
修改nginx主页面内容:
echo "Nginx-1.18.0 In Docker" > index.html
制作Dockerfile文件:vim Dockerfile
FROM centos7.8:v1.0
LABEL maintainer="wujianfu <root@www.com>"
RUN yum -y install gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel && useradd -r -s /sbin/nologin nginx \
&& yum clean all &&
ADD nginx-1.18.0.tar.gz /usr/local/src/
RUN cd /usr/local/src/nginx-1.18.0 && ./configure --prefix=/apps/nginx && make && make install \
&& rm -rf /usr/local/src/nginx*
ADD nginx.cfg /apps/nginx/conf/
COPY index.html /apps/nginx/html/
RUN ln -s /apps/nginx/sbin/nginx /usr/sbin/nginx
EXPOSE 80 443
CMD ["nginx"]
构建生成nginx镜像:docker build -t nginx1.18-centos7.8:v1.0 .
3)、运行nginx容器
docker run -d -p 80:80 --name n1 nginx1.18-centos7.8:v1.0
4、简述TCP三次握手的过程。
(1)第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。
(2)第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态。
(3)第三次握手:Client收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给Server,Server检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以开始传输数据了。
5、docker容器时间跟本地时间不一致怎样解决。
复制本地时区信息到容器中,例如:docker cp /usr/share/zoneinfo/Asia/Shanghai nginx:/etc/localtime