面试必备之docker相关知识 下

257 阅读5分钟

你好 我是懂java的测试


前言

上篇文章主要讲述docker的基本概念、镜像的基本命令的使用,下篇文章会继续分享一些基本命令、以及一些面试和工作中常见的docker技术。

docker 操作镜像其他命令有哪些?

docker save imagesId -o fileName.tar.gz

docker save命令可以将从本地镜像导出为一个压缩文件,然后复制到其他服务器执行 docker load -i fileName.tar.gz 导入使用。

docker tag imagesId test:0.0.3

给镜像重新命名:

图片

docker commit  容器id

基于容器id进行镜像制作

docker commit -c "EXPOSE 80 443" 6963c7df8496 lv/portainer/portainer:0.0.1

图片

docker 操作容器的命令有哪些?

容器生命令周期如截图:

图片

可见操作容器命令有很多,docker ps -a 可以查询全部容器、docker rm 删除容器、docker run  -p 81:80 本地端口映射到容器80端口、docker start|stop|restart|pause|unpause等等。

dockerFile是什么?会制作吗?

dockerfile 是由一条Docker程序将这些dockerfile 指令再翻译成真正的linux命令,

相对于手工制造镜像,dockerfile 更直观告诉人制造镜像的具体过程,效率更高。官方也极力推荐、日常工作中也经常使用dockerfile制造镜像,dockerfile中常见的指令并不多,大致分类如下。

图片具体怎么操作呢?下面就以制造Nginx镜像来举例

# Description: test image
FROM centos:lastest #基础镜像 centos 最新版
RUN yum install nginx -y  #执行shell命令,安装Nginx软件
EVN DOC_ROOT=/data/web/html  #设置环境变量,以备使用
COPY index.html $DOC_ROOT #拷贝文件
COPY yum.repos.d /etc/yum.repos.d/  #确保源文件在工作目录中,并且目录目录必须以/结尾
ADD http://nginx.org/download/nginx-1.15.2.tar.gz /usr/local/src #如果是本地tar包会解压到容器的目录中,URL的话则不会
WORKDIR /usr/local/soft/  #使用WORKDIR指定目录
ADD nginx-1.15.2.tar.gz ./  #这里就使用了上面的WORKDIR
VOLUME /data/web  挂载点
EXPOSE  80/tcp 80/udp  #将容器的80端口暴露给宿主机
USER  501  #UID可以是任意数字,但必须在/etc/passwd中存在
CMD ["nginx","-g","daemon off;"]  #容器启动命令

docker的数据管理是怎样的?

如果要将写入到容器的数据永久保存,则需要将容器中的数据保存到宿主机的指定目录。

数据卷(data volume):直接使用宿主机目录,数据卷类似于挂载的一块磁盘,实际上就是宿主机上的目录或文件,可以直接被mount到容器中使用,

工作中主要应用场景:

1)日志输出
2)静态web页面

3)应用配置文件

4)多容器间目录或文件共享

注意:

1)数据卷是目录或者文件,并且可以在多个容器之间共同使用

2)对数据卷更改数据在所有容器里面会立即更新。

3)数据卷的数据可以持久保存,即使删除使用该数据卷的容器也不影响。

4)在容器里面的写入数据不会影响到镜像本身
5)依赖于宿主机目录,宿主机出问题,上面容器会受影响,当宿主机较多时,不方便统一管理

怎么使用呢?

一般都是在docker run启动容器的时候使用 参数 -v 譬如

docker run  -d -v /data/testdir:/data/nginx/html/  -p 8001:80 nginx,就是将本地目录/data/testdir 挂载到nginx 容器内的路径/data/nginx/html/,

docker的仓库管理是怎样的?

Docker仓库,类似java的maven仓库可以保存jar包,为了方便的管理和使用docker镜像,可以将镜像集中保存至Docker仓库中,将制作好的镜像push到仓库集中保存,在需要镜像时,从仓库中pull镜像即可。

Docker 仓库分为公有云仓库和私有云仓库

公有云仓库:由互联网公司对外公开的仓库

私有云仓库:组织内部搭建的仓库,一般只为组织内部使用,常使用下面软件搭建仓库docker registory、docker harbor。

docker的容器编排工具有了解过吗?

假如宿主机产生大量容器要怎么管理?如果都是手动操作会比较麻烦而且容易出错,此时推荐使用docker 编排工具 Docker Swarm 和 Docker Compose ,但不同的是,Docker Compose 是一个在单个服务器或主机上创建多个容器的工具,只能管理当前主机上的Docker,也就是说不能去启动其他主机上的Docker容器,而 Docker Swarm 则可以在多个服务器或主机上创建容器集群服务,对于微服务的部署,显然 Docker Swarm 会更加适合。

Kubernetes也是容器编排工具,和docker swarm有什么区别呢?

KubernetesDocker Swarm
在市场上最成熟的解决方案。Docker Swarm提供良好的特性,但受限于其API。
Kubernetes也在市场上最受欢迎的解决方案。Docker Swarm的市场Kubernetes相比相对较弱。
Kubernetes很难安装和配置。Docker Swarm的设置和安装是很容易的。
Kubernetes提供内置的日志记录和监控工具。Docker只支持第三方监控和日志记录工具。
自动定量的CPU利用率是一个很大的因素。可以手动扩展服务。

Kubernetes得到了开发者社区的广泛认可,尽管它的安装过程非常艰难,之所以受到欢迎的原因很大程度取决于它提供的灵活性,以及良好的谷歌背景,而Docker Swarm有一个小型的社区,增长略微缓慢。

总结

docker 相关知识的文章就到这里,容器化知识远不止于此,需要我们不断的去探索和学习,后期将重点分享Kubernetes技术,敬请期待。