马哥教育第二次月考

第二阶段考试
一 、判断题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下查看服务程序占用的端口命令是什么?( 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行的内容?( 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 服务器,但又想让局域网内的用户可以使用计算机名互相访问时,应配
置 (    hosts    ) 文件。
7、DHCP 是动态主机配置协议的简称,其作用是:(   动态分配IP地址  ) 。
8、 唯一标识每一个用户的是 (  UID    ) 和 (  用户名    ) 。
9、docker和虚拟机的区别在于虚拟机有(    独立的内核    )。
10、docker采用了一种(  数据卷   )挂载的方式实现了可写层
三、操作题一共5道、一题8分。
1、简述Raid0、Raid1、Raid5、Raid10的区别?
RAID俗称磁盘冗余阵列,简称为磁盘阵列.区别在于:
  raid0:至少需要俩块磁盘;优点是读写速度块,性能最佳;缺点是没有冗余,磁盘一旦损坏,容易丢失数据
  raid1:需要双数磁盘(2,4,6...);优点是镜像冗余,可以最多损坏一半数据也不会丢失;缺点是写入速度较慢.适合做系统盘.
  raid5:至少需要三块磁盘;优点是具有一定的性能和冗余,可以最多损坏一个数据也不会丢失,读性能相对比较好;缺点是:写入性能不高.
  raid10:也叫raid01,至少需要四块磁盘,先按raid0分为俩组,再分别对俩组按raid1做镜像冗余;优点是既兼顾了冗余,又提高了性能;缺点是:花费高
2、通过shell脚本部署一个httpd服务。
#!/bin/bash
##thi sh is  make install apache
yum install apr-devel  apr-util-devel gcc pcre-devel openssl-devel redhat-rpm-config wget make curl -y &> /dev/null
id apache
[ $? -ne 0 ] && useradd -r apache -s /sbin/nologin -d /var/www -u 48
[ -d /apps ] || mkdir /apps &> /dev/null
[ -d /etc/httpd ] && rm -rf /etc/httpd
cd /usr/local/src
[ -e httpd-2.4.43.tar.bz2 ] || wget https://mirror.bit.edu.cn/apache//httpd/httpd-2.4.43.tar.bz2
[ -d httpd-2.4.43 ] && rm -rf httpd-2.4.43 
tar xf httpd-2.4.43.tar.bz2
cd httpd-2.4.43/
./configure --prefix=/apps/httpd --sysconfdir=/etc/httpd --enable-ssl &>/dev/null
make &>/dev/null
make install &>/dev/null
echo 'PATH=/apps/httpd/bin:$PATH' > /etc/profile.d/httpd.sh
. /etc/profile.d/httpd.sh
sed -i 's/daemon/apache/g' /etc/httpd/httpd.conf
sed -i 's/^#ServerName.*/ServerName localhost:80/p' /etc/httpd/httpd.conf
apachectl
[ $? -eq 0 ] && echo  -e "`curl 127.0.0.1:80` 
Apache 安装成功" || echo "Apache 安装失败"
3、通过dockerfile实现nginx的部署
  构造底层cento7.8镜像
[root@ubuntu18044 /dockerfile/centos]#tree 
.
├── build.sh
└── Dockerfile

0 directories, 2 files
[root@ubuntu18044 /dockerfile/centos]#cat Dockerfile 
FROM     centos:centos7.8.2003
LABEL     maintainer="huangguangrui <158086268@qq.com>"

RUN     yum install -y wget && rm -f /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 
        && sed -i /mirrors.aliyuncs.com/d /etc/yum.repos.d/CentOS-Base.repo 
        && sed -i /mirrors.cloud.aliyuncs.com/d /etc/yum.repos.d/CentOS-Base.repo 
        && yum install -y vim-enhanced tcpdump lrzsz tree telnet bash-completion net-tools bzip2 lsof 
            zip unzip nfs-utils gcc make gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel 
            system-devel zlib-devel 
        && yum clean all 
        && rm -f /etc/localtime 
        && ln -s ../usr/share/zoneinfo/Asia/Shanghai  /etc/localtime 
        && useradd -u 88 www
[root@ubuntu18044 /dockerfile/centos]#bash build.sh v2
Sending build context to Docker daemon  3.584kB
Step 1/3 : FROM     centos:centos7.8.2003
 ---> afb6fca791e0
Step 2/3 : LABEL     maintainer="huangguangrui <158086268@qq.com>"
 ---> Using cache
 ---> bb2d0951cf40
Step 3/3 : RUN     yum install -y wget && rm -f /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      && sed -i /mirrors.aliyuncs.com/d /etc/yum.repos.d/CentOS-Base.repo         && sed -i /mirrors.cloud.aliyuncs.com/d /etc/yum.repos.d/CentOS-Base.repo         && yum install -y vim-enhanced tcpdump lrzsz tree telnet bash-completion net-tools bzip2 lsof             zip unzip nfs-utils gcc make gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel             system-devel zlib-devel         && yum clean all         && rm -f /etc/localtime         && ln -s ../usr/share/zoneinfo/Asia/Shanghai  /etc/localtime         && useradd -u 88 www
 ---> Using cache
 ---> 53ddfb263e3e
Successfully built 53ddfb263e3e
Successfully tagged centos7.8:v2
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos7.8           v2                  53ddfb263e3e        4 minutes ago       399MB

  基于centos7.8部署nginx.

.[root@ubuntu18044 /dockerfile/nginx]#tree
. ├── build.
sh ├── Dockerfile ├── index.html └── nginx-1.16.1.tar.gz 0 directories, 4 files [root@ubuntu18044 /dockerfile/nginx]#cat Dockerfile FROM centos7.8:v2 LABEL maintainer="huangguangrui <158086268@qq.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* COPY nginx.conf /apps/nginx/conf/ COPY index.html /apps/nginx/html/ EXPOSE 80 443 CMD ["/apps/nginx/sbin/nginx"]


[root@ubuntu18044 /dockerfile/nginx]#bash build.sh v1
Sending build context to Docker daemon  1.037MB
[WARNING]: Empty continuation line found in:
    RUN     cd /usr/local/src/nginx-1.16.1         && ./configure --prefix=/apps/nginx         && make && make install         && rm -rf /usr/local/src/nginx* COPY    nginx.conf /apps/nginx/conf/
[WARNING]: Empty continuation lines will become errors in a future release.
Step 1/7 : FROM    centos7.8:v2
 ---> 53ddfb263e3e
Step 2/7 : LABEL     maintainer="huangguangrui <158086268@qq.com>"
 ---> Running in 7eded2fde31c
Removing intermediate container 7eded2fde31c
 ---> bb694b405bd8
Step 3/7 : ADD     nginx-1.16.1.tar.gz /usr/local/src
 ---> 2e9fa1ceb851
Step 4/7 : RUN     cd /usr/local/src/nginx-1.16.1         && ./configure --prefix=/apps/nginx         && make && make install         && rm -rf /usr/local/src/nginx* COPY    nginx.conf /apps/nginx/conf/
 ---> Running in 493f60b288a0

...

Removing intermediate container a043cefe19a8
 ---> 857ba4e06075
Successfully built 857ba4e06075
Successfully tagged nginx-centos7.8:v3
REPOSITORY          TAG                 IMAGE ID            CREATED                  SIZE
nginx-centos7.8     v1                  21bdd2a2cd1c        3 minutes ago            409MB
centos7.8           v2                  53ddfb263e3e        13 minutes ago           399MB
centos              centos7.8.2003      afb6fca791e0        3 months ago             203MB
[root@ubuntu18044 /dockerfile/nginx]#docker run -d -P  nginx-centos7.8:v1 
73c15f016987a4cee2bd396bbedf3dfd4b5298d677bb5f7edccc53d5330c74f1
[root@ubuntu18044 /dockerfile/nginx]#docker port gallant_easley 
443/tcp -> 0.0.0.0:32775
80/tcp -> 0.0.0.0:32776
[root@ubuntu18044 /dockerfile/nginx]#curl 127.0.0.1:32776
<h1>nginx in docker for dockerfile</h1>
4、简述TCP三次握手的过程?
三次握手,也叫TCP连接的建立.这个连接必须是一方主动打开,另一方被动打开的.

握手之前双方都是CLOSED阶段,首先由主动打开连接的客户端结束CLOSED阶段,被动打开连接的服务器端也结束CLOSED阶段,
并进入LISTEN阶段,随后开始三次握手.

第一次握手:客户端向服务器端发送一段TCP报文,其中包括:
  标志位为SYN,表示请求建立新连接;序列号为seq=x;随后客户端进入SYN-SENT阶段
第二次握手:服务器端收到来自客户端的TCP报文后,结束LISTEN阶段,并返回一段TCP报文,其中包括:
  标志位为SYN和ACK,表示 服务器端同意建立新连接;序列号为seq=y;
  确认号为ack=x+1,表示 确认已经收到客户端的序号seq,并将seq的值加1作为确认号ack的值;
  随后服务器端进入SYN-RCVD阶段
第三次握手:客户端收到来自服务器端的确认数据的TCP报文后,结束SYN-SENT阶段,并返回最后一段报文,其中包括:
  标志位为ACK,表示确认收到服务器端的同意连接信号;
  序号为seq=x+1,表示收到服务器端的ack号,并将ack的值加1作为自己序号seq的值;
  确认号为ack=y+1,表示已经收到服务器端的seq序号,并将seq序号的值加1作为自己确认号ack的值;
  随后客户端进入了ESTABLISHED阶段;
  服务器收到最后的一段报文后,也结束了
SYN-RCVD阶段,进入ESTABLISHED阶段.

此后客户端和服务器端就可以正常的进行数据传输了,这就是三次握手的过程.
5、docker容器时间跟本地时间不一致怎样解决
时间不一样可以通过更改时区来解决:
首先进入容器内:
  docker exec -it 容器ID/名字 bash
删除默认配置的时区:
  rm -f /etc/localtime
把上海的时区软连接到/etc/localtime
  ln -s ../usr/share/zoneinfo/Asia/Shanghai /etc/localtime
原文地址:https://www.cnblogs.com/huangguangrui/p/13459152.html