day108 Docker简单命令

1.docker的原理
Docker就是虚拟化的一种轻量级替代技术。Docker的容器技术不依赖任何语言、框架或系统,可以将APP编程一种标准化、可移植的、自管理的软件,并脱离服务器硬件在任何主流系统中开发、调试和运行。
简单的说就是,在Linux系统上迅速创建一个容器(类似虚拟机)并在容器上部署和运行应用程序,并通过配置文件可以轻松实现应用程序的自动化安装、部署和升级,非场方便。因为使用了容器,所以可以很方便的把生产环境和开发环境分开,互不影响,这是docker最普通的一个玩法。

2.dockerfile的书写主要有add,volume,file,from,env,cmd,entrypoint,workspace等命令

3.docker 镜像你们是如何制作的,制作镜像的原则是什么
镜像制作技巧:
1)尽量合并Dockerfile命令,以便减少镜像层数,进而减少commit/run/rm次数,加快构建;
2)调整命令前后顺序,以便提高复用度及cache命中率,加速构建;(比如像RUN apt-get -y update这类大多镜像都需要用到命令应该放在上面,以便跨镜像复用。然而像WORKDIR、CMD、ENV、ADD这些很可能导致cache miss的命令应该放在底部)
镜像制作原则:
1)尽量生成一个base,便于版本的迭代和作为公用镜像;
2)清晰的注释,提高可读性,便于自己及他人理解;
8.Dockerfile 你们常用的命令有哪几个,列举下作用是什么
CMD(设置容器启动时要运行的命令只有在你执行 docker run 或者 docker start 命令是才会运行,其他情况下不运行)
EXPOSE(设置暴露端口号) ENV(设置环境变量) ADD(复制命令,把本地的文件复制到镜像中)
COPY(与ADD指令类似但是COPY的src部分只能是本地文件,文件路径是Dockerfile的相对路径。如果COPY的是压缩包不会帮你解压。) VOLUME(设置一个卷,保存容器中产生的数据) WORKDIR(指定容器的工作目录)

4.Docker常用命令
启容器,停容器,创建容器,使用docker run、docker start docker create等命令
docker ps 查看容器,然后就是docker存储的管理, -v我们可以将宿主机的目录挂载到容器中,
容器存储的文件就相当于存储到了宿主机的磁盘中。

4.如何使用Docker构建与环境无关的系统
只读文件系统
环境变量注入
存储卷

10.Dockerfile中的命令COPY和ADD命令有什么区别
COPY指令和ADD指令的唯一区别在于是否支持从远程URL获取资源。COPY指令只能从执行docker build所在的主机上读取资源并复制到镜像中。而ADD指令还支持通过URL从远程服务器读取资源并复制到镜像中。

11.什么是Docker Hub
Docker Hub被用于源代码管理集成,也用于构建和测试工具来加速部署周期,部署周期从天减少到以分钟计算,Docker宣称已经允许用户加速应用的传输

12.Docker Image和Layer有什么区别
Docker镜像是一层一层组成的,每层代表镜像Dockerfile的一行命令。除了最后一层,其他的层都是只读的
当你运行镜像的时候,会有一个称为container layer的可读写层,如上图所示。
这意味着,你运行此镜像的多个实例,也就是多个容器时,把所有变动都写到Container layer这一层,而不影响镜像里面的文件层

13.生产中如何监控Docker

  1. 部署cadvisor容器,用来收集host上的容器信息,该容器部署在需要收集容器信息的每一个主机上部署;
    docker run -v /:/rootfs:ro -v /var/run:/var/run:rw -v /sys:/sys:ro -v /var/lib/docker:/var/lib/docker:ro -v /dev/disk:/dev/disk:ro -p 8080:8080 --detach=true --name cadvisor google/cadvisor
    2.部署grafana容器,用于将收集的主机容器数据显示到浏览器
    docker run -d -p 3000:3000 --name grafana --net=host grafana/grafana
    3.部署prometheus server ,选定一台服务器
    docker run -d -p 9090:9090 -v /root/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml -v /root/prometheus/alert.rules:/etc/prometheus/alert.rules -v /root/prometheus/conf.d:/etc/prometheus/conf.d --name prometheus --net=host prom/prometheus
    更改static_configs:
    4.部署node-exporter
    docker run -d -p 9100:9100 -v /proc:/host/proc -v /sys:/host/sys -v /:/rootfs --name node-exporter --net=host prom/node-exporter --path.procfs /host/proc --path.sysfs /host/sys --collector.filesystem.ignored-mount-points "^/(sys|proc|dev|host|etc)($|/)"
    5.部署告警(钉钉告警)

1.如何查看容器的统计信息? B
(B) Docker stats容器id

2.docker容器重启命令是: C
(C) docker restart容器ID

3.Docker是一个开源的应用容器引擎,所以Docker是容器的一种类型 A
(A)正确
(B)错误

请判断查看容器的进程命令为Docker top容器id是否正确 A **
(A)正确
(B)错误

一个apache镜像对外服务端口不可以修改 B
(A)是

(B)否
docker需要查询日志应该使用什么命令? C
(C) docker logs

docker把主机的/tmp/abc.txt文件复制到容器2d0abd3328cf里的/tmp,以下哪个命令正确 B*
docker cp /tmp/abc.txt 2d0abd3328cf:/tmp

查看容器属性的方法 A
A docker info

docker环境下,下面通过哪个命令可以查看docker的CONTAINER ID ?D
(D) docker ps -a

docker如何批量清理临时镜像文件? B *
B sudo docker rmi $(sudo docker images -q -f danging=true)

如何备份一个docker 镜像? B
(A) docker backup

(B docker save
C docker export
(D docker write

容器具有数据持久化特性,无论进入容器进行什么样的更改,退出容器后再重新启动容器,里面数据不会丢失 A
A对
B错

启动nginx容器(随机端口映射),并挂载本地文件目录到容器html的命令是? A
(A) docker run -d -P -name nginx2 -V /home/nginx:/usr/share/nginx/html nginx

docker pull命令用于镜像下载 A
A正确
B)错误

容器退出后,通过docker ps命令查看不到,数据会丢失 B
(A) 正确

B错误
如何执行一个docker 镜像?B
(A docker exec

B docker run
C docker do
D docker go

docker本地的镜像文件都存放在哪里 A
A /varlib/docker/目录下

Docker能在非Linux平台(Windows+MacOS) 上运行 B
A)正确

B错误
Docker Hub:是用于分享、管理Docker容器的Docker SaaS平台 A
A正确
B)错误

在使用docker create命令创建容器或使用docker run创建并运行容器的时候。可以使用-m)-memory参数来调整容器使用内存的大小。A
A正确
(B错误

在使用docker create命令创建容器或使用docker run创建并运行容器的时候,不可以使用-c|cpu-shares[=0]参数来调整同期使用CPU的权重,错误
如何查看容器abc的详细信息? D
D Docker inspect abc

Redhat操作系统中,不可以运行ubuntu镜像 B
(A) 是

B)否
docker如何停止所有正在运行的容器? D
(D docker kill $ (sudo docker ps -a -q)

docker环境下,如何无需进入docker从docker中拷贝文件到本地?A
A) docker cp 容器id:/root.bashrc /tmp/
B ftp
C scp :/root.bashrc /tmp
(D) docker scp容器id:/oot.bashrc /tmp/

Docker命令非常丰富,以下哪个子命令查看容器的运行状态 B
B docker ps

进入容器执行方法 A
(A) docker exec

使用什么命令能把一个镜像下载到本地 B
B) docker pull

镜像不允许用户自己修改 B
A)是

B 否
docker如何临时退出一个正在交互的容器的终端,而不终止它? A
A 按Ctrl+p, 后按Ctrl+q,如果按Crl+c会使容器内的应用进程终止,进而会使容器终止。

很多种容器编排工具,最流行的目前是kubernets,即k8s A
A是
B否

容器与虚拟化的描述错误的是 D
(A 容器比虚拟机少了OS
(B) 容器开销更小
C 容器启动速度更快,毫秒级
image-20200121222411785

D 虚拟机比容器镜像更小
docker容器运行时,可以指定CPU亲和性, 内存大小 A
A是
B)否

容器退出后,使用docker ps命令无法查看到,说明容器被自动删除了? B
A对

B)错
如何搜索docker镜像nginx? C
(A) Docker pull centos
B Docker search nginex

C Docker search nginx
D Docker pull cento
Docker能在32位的系统里运行。B
A)正确
错误

很多应用容器都是默认后台运行的,怎么查看它们的输出和日志信息? C
A) docker log
(B) docker logarithms

C docker logs
D docker logarithm

有关docker下列说法正确的是 ACD *
A 当我们在本地主机上使用一个不存在的镜像时 Docker就会自动下载这个镜像。如果我们想预先下载这个镜像,我们可以使用docker pull命令来下载它。#docker pull ubuntu:13.10,同样设置镜像标签#docker tag 860c279d2fec runooblcentos:dev。
B docker stats动态查看docker源消耗情况,包括:内存、网络I/O但是不包括CPU。

C docker通过exec可以创建两种任务(后台型任务和交互型任务)交互型任务: docker exec - it "容器ID" /bin/bash后台型任务:docker exec _d "容器ID" touch 123.
D 批量操作容器, docker ps -q只列出docker id
如何启动本机Docker服务 A
A $ sudo systemctl start docker
net选项后面可以跟哪些参数? ABC *
A None
B host
C bridge

docker的存储驱动程序有哪些 ABCDE *
A AUES
B Btrfs
C Device mapper
D OverlayFS|E
E ZFS

docker命令以下哪些为高危操作 A *
A docker rm容器id
B docker inspect容器ID
C docker mv容器ID
D docker rm -f镜像ID

Docker的核心组件有哪些? ACD
A 镜像
C 容器
D 仓库

docker网络模式包括 ABCD
A host模式
B container模式
C none模式
D bridge模式

Docker的主要用途有() ABC *
A 提供一次性的环境
B 提供弹性的云服务
C 组建微服务架构

有关docker正确的是 ABCD
A docker info 可以查看到集群内容器的数量
B docker ps容器ID (参数-a:显示所有容器,包括未运行的; -n: 列出最近创建的n个容器)
C docker pause暂停容器中所有的进程
D docker run创建一个新的容器并且启动它

构建Docker镜像应该遵循哪些原则? ABCDE
A尽量选取满足需求但较小的基础系统镜像, 建议选择debian:wheezy镜像, 仅有43MB大小
B请理编译生成文件、 安装包的缓存等临时文件
C安装各个软件时候要指定准确的版本号, 并避免引入不需要的依赖
D从安全的角度考虑, 应用尽量使用系统的库和依赖
E使用Dockerfile创建镜像时候要添加.dockerignore文件或使用干净的工作目录

docker容器与主机之间的数据拷贝命令是? CD *
A docker pc /www 96f7f14e99ab:/www/
B docker cp /www 96f7f14e99ab:/www/
C docker cp 96f7f14e99ab:/www /wwwl
D docker cp 967f14e99b:/www /tmp/

以下哪些命令能构建一个镜像? ABD
A docker create
B docker commit
(C docker add
D docker build

docker进入容器的方法有哪些? CD
C 使用 docker attach命令
D 使用exec命令

作者:三德书生
链接:https://www.jianshu.com/p/4774cd39ac8a
来源:
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

你可能感兴趣的:(day108 Docker简单命令)