欢迎光临散文网 会员登陆 & 注册

过关斩将之路-docker(IT枫斗者)

2023-04-05 15:35 作者:IT枫斗者-跳蚤网  | 我要投稿


1:什么是docker?有何作用?

1答是个容器化平台,它以容器的形式将应用程序和它相关的依赖都打包在一起,以确保您的应用程序在任何环境中无缝运行。

作用:

  • 他将我们开发的应用程序打成个镜像,不管是DEV还是QA还是线上,拿走镜像直接运行即可,不会再出现因为环境不一致导致程序有问题的情况,减少了扯皮的时间。

  • 部署简单方便。

  • 方便我们统一管理应用程序以及方便OP动态伸缩。

2问:它与虚拟机有什么区别?

2答

  • 传统虚拟机,虚拟出一个硬件,运行一个完整的操作系统,然后在这个操作系统上安装软件和部署等操作。

  • 容器内的应用直接运行在宿主机上,容器是没有自己内核的,也没有虚拟我们的硬件环境,多个容器之间是共享硬件资源和宿主机内核的,所以很轻便。

  • 容器之间彼此隔离,每个容器内部都有一个属于自己的文件系统,互不影响。

3问:Docker容器有哪几种状态?如何查看Docker容器的状态?

3答:运行、已暂停、重新启动、已退出。采取 docker ps -a查看容器的状态。


4问:Docker的流程是怎样的?

4答

5问:Docker的原理是怎么样的?

5答:Docker是一个Client-Server结构的系统,Docker的守护进程运行在主机上,通过Socket从客户端访问,DockerServer接收到Docker Client的指令就会执行对应的命令(比如 docker run等)。docker之间互相隔离。

6问:什么是Docker镜像?

6答:Docker镜像是Docker容器的源代码。用于创建容器。使用build命令创建镜像,并且在使用run启动时它们将生成容器。镜像存储在Docker仓库中。


7问:Docker镜像和层有什么区别?

7答

  • 镜像:Docker镜像是由一系列只读层构建的;

  • 层:每个层代表镜像Dockerfile中的一条指令;

重要的是,每个层只是与之前一层的一组差异层,也就是相同的层就不再重新pull了,节省了空间。


8问:什么是Docker容器呢?

8答:Docker容器包括应用程序及其所有依赖项,但与其他容器共享内核,在主机操作系统的用户空间中作为独立进程运行。Docker容器是Docker镜像的实例。


9问:说说Docker的一些常用命令?

9答

10问:Docker如何停止所有运行的容器?

10答
重点考察的是$符号,相当于for循环遍历。

docker kill $(docker ps -q)

docker如何清理批量后台停止的容器?

docker rm $(docker ps -a -q )


11问:Dockerfile中常用指令有哪些?

11答

12问:Dockerfile中的COPY和ADD有啥区别?

12答

  • ADD:拷贝文件或目录到容器中,如果是URL或压缩包便会自动下载或自动解压;

  • COPY:拷贝文件或目录到容器中,跟ADD类似,但不具备自动下载或解压的功能;

13问:如何构建一个dockerfile?

13答

  • 编写一个dockerfile文件

  • docker build构建成一个镜像

  • docker run启动镜像为容器

  • docker push发布镜像到远程仓库

13问:如何构建一个dockerfile?

13答

  • 编写一个dockerfile文件

  • docker build构建成一个镜像

  • docker run启动镜像为容器

  • docker push发布镜像到远程仓库

14问:Dockerfile的CMD和ENTRYPOINT的区别?

14答:两个都是运行容器时执行的shell命令的功能。区别:

15问:如何发布docker镜像到Dockerhub?

15答

  • 注册账号:https://hub.docker.com/

  • 登录dockerhub账号:,然后回车会让输入密码。

  • 提交镜像到dockerhub, docker push 镜像名称:TAG

16问:Docker数据怎么持久化?

16答

17问:多个容器之间怎么实现数据共享?

17答:让多个容器之间挂载到同一个容器的目录下。命令:

比如容器A挂载xxx目录到宿主机/home/work下了,然后容器B和容器C挂载到了容器A的xxx上,这时候A、B、C三个容器共享同一份挂载目录,修改其中一个,其他两个会同步修改,停掉容器且删除容器后数据也不会丢失!因为他在宿主机上有备份。


18问:为什么需要数据共享?

18答

如果容器太多,每一次都要写 -v xxx:xxx ,过于复杂,也容易出错,这时候可以通过 docker create创建共享容器,然后启动的时候通过 --volumes-from 指定创建的共享容器名称即可,也就是说可以把上面 -v xxx:xxx 这一串统一放到一个地方去管理,容器启动的时候直接引用这个统一配置即可,方便统一管理。


19问:说说docker的网络管理。

19答

  • 单向容器间通信采取 --link,原理就是在hosts文件里添加映射。

  • 双向容器间互通采取自定义网络的方式,然后将应用加入到同网络中即可双向互通。好处在于便于管理,不同集群采取不同网络。


过关斩将之路-docker(IT枫斗者)的评论 (共 条)

分享到微博请遵守国家法律