建站教程

建站教程

Products

当前位置:首页 > 建站教程 >

docker运行原理与使用总结(docker常用命令的详细内容讲解)

GG网络技术分享 2025-03-18 16:14 0


docker运行原理与使用总结

docker运行原理概述

Client-Server架构

  • docker守护进程运行在宿主机上systemctl start docker
  • daemon进程通过socket从客户端(docker命令)接受命令来运行管理各个容器
  • 容器是一个运行时环境,可以看做是运行中的精简版Linux系统

docker容器技术 vs 虚拟机技术(VMware等)

  • 对比角度:程序运行所在系统、存储占用、运行性能、移植性(类比JDK)。
  • 不再需要Hypevisor硬件资源虚拟化的抽象层,运行在docker容器上的程序直接使用实际宿主物理机的硬件资源,从而在CPU和内存利用率上有明显优势。
  • docker新建一个容器时,是直接使用宿主机的内核。VMware新建一个虚拟机时,需要加载GuestOS内核(VMware上下载的各个os),这个过程至少分钟级别,而docker新建容器则是秒级别。
  • 官方对比图↓
  • docker


  • 虚拟机



docker镜像原理

镜像是什么

  • 轻量级、可执行的独立软件包
  • 打包了运行某个软件(比如tomcat镜像)所需的所有内容,包括:
  • 代码(tomcat代码)
  • 运行时环境(OS、JDK)
  • 依赖库
  • 环境变量
  • 配置文件等
  • 底层基础是Union File System(联合文件系统)
  • UnionFS:一种分层、轻量级且高性能的文件系统,支持对文件系统的修改作为一次提交来一层层的叠加,也支持将不同目录挂载到同一虚拟文件系统下。
  • 镜像由一层层的文件系统组成,通过分层进行继承。基于基础镜像,可以制作出各种具体的应用镜像
  • 镜像运行时,一次联合加载多个文件系统,根据继承关系进行叠加,最终外部只看到一个文件系统,但拥有了完整的文件和目录结构。

镜像加载原理

  • 镜像实际有一层层的文件系统组成,即UnionFS。
  • 文件系统层级中主要关注bootfs和rootfs
  • bootfs包括BootLoader和kernel(操作系统内核),BootLoader主要是引导加载kernel。同Linux,docker镜像最底层是bootfs。Linux系统启动时,会加载bootfs,然后BootLoader加载kernel(Linux内核)至内存,完成之后内存的使用权由bootfs转移给内核,接着卸载掉bootfs。
  • rootfs包含了我们熟悉的Linux文件目录结构:/dev/ /proc/ /bin/ /etc/ 等。对于不同的Linux发行版(Ubuntu、centos等),bootfs基本一致(内核相同,都是Linux-kernel),而rootfs会有差别。
  • why一个centos的docker镜像只有200M,而VMware的centos系统镜像几个G?
  • 对于一个精简的Linux系统,rootfs可以很小,只需要包括最基本的命令、工具和程序库就OK了。
  • docker容器共用了宿主机的系统内核,只需要提供精简的rootfs就OK,所以docker的os镜像体积可以这么小,因此可以把docker容器看做一个精简的Linux系统。
  • why一个tomcat的docker镜像反而比一个centos的docker镜像大得多
  • 每个应用级别的docker镜像,都是源于基础镜像(联合文件系统),类比Java中的Object类,一层层继承得到的。
  • centos镜像拉取:

[root@richardCentos ~]# docker pull centos

Using default tag: latest

latest: Pulling from library/centos

d8d02d457314: Pull complete

Digest: sha256:307835c385f656ec2e2fec602cf093224173c51119bbebd602c53c3653a3d6eb

Status: Downloaded newer image for centos:latest

docker.io/library/centos:latest

  • tomcat镜像拉取:

[root@richardCentos ~]# docker pull tomcat

Using default tag: latest

latest: Pulling from library/tomcat

9cc2ad81d40d: Pull complete

e6cb98e32a52: Pull complete

ae1b8d879bad: Pull complete

42cfa3699b05: Pull complete

8d27062ef0ea: Pull complete

9b91647396e3: Pull complete

7498c1055ea3: Pull complete

a183d8c2c929: Pull complete

73dd800dda4c: Pull complete

2bc71ef979ec: Pull complete

Digest: sha256:80db17f3efd9cdcd9af7c799097fe0d223bbee8f25aa36234ab56292e3d8bd7b

Status: Downloaded newer image for tomcat:latest

docker.io/library/tomcat:latest

  • 很明显,tomcat需要联合的镜像更多,可以想象这样的继承关系:
  • kernel < centos < jdk < tomcat
  • docker镜像都是只读的,但当容器启动时,一个新的可写层会加载到镜像的顶层,这一层称为“容器层”,即我们进行容器交互操作的对外层,容器层之下的都叫“镜像层”。

docker使用心得

镜像与容器理解

  • 类比Java程序,镜像-Java类,容器-Java类对象,Docker-JDK(跨平台)
  • 关于Logo,大海里(宿主主机)鲸鱼(docker)背着很多集装箱(运行的容器s)
  • 容器可以看作是一个运行中的精简版的Linux环境(文件系统、root用户权限等都有)

使用经验

  • docker --help xxx 看下官方说明,可以解决很多疑惑

docker常用命令的详细内容讲解

docker常用命令:1、【docker version】,查看docker容器版本;2、【docker info】,查看docker容器信息;3、【docker images】,列出本地images。

1、Docker容器信息

docker常用命令的详细内容讲解 (https://www.wpmee.com/) WordPress教程 第1张

2、镜像操作

提示:对于镜像的操作可使用镜像名、镜像长ID和短ID。

2.1、镜像查看

docker常用命令的详细内容讲解 (https://www.wpmee.com/) WordPress教程 第2张

docker常用命令的详细内容讲解 (https://www.wpmee.com/) WordPress教程 第3张

docker常用命令的详细内容讲解 (https://www.wpmee.com/) WordPress教程 第4张

2.2、镜像搜索

docker常用命令的详细内容讲解 (https://www.wpmee.com/) WordPress教程 第5张

2.3、镜像下载

docker常用命令的详细内容讲解 (https://www.wpmee.com/) WordPress教程 第6张

2.4、镜像删除

docker常用命令的详细内容讲解 (https://www.wpmee.com/) WordPress教程 第7张

2.5、镜像构建

docker常用命令的详细内容讲解 (https://www.wpmee.com/) WordPress教程 第8张

以上就是docker常用命令的详细内容,更多请关注网站的其它相关文章!

标签:

提交需求或反馈

Demand feedback