深度分析Docker容器之启动容器,并附完整示例
在数字世界的汪洋大海中,每一艘“船”(容器)都承载着特定的使命(应用)。而作为船长的你,一句docker run就是吹响启航的号角。但你是否曾好奇,这简单的命令背后,究竟隐藏着怎样精妙的魔法?今天,就让我们钻入“船”腹,来一场从码头到远洋的深度航行。
第一章:起锚!—— docker run 的核心奥秘
首先,让我们抛弃那些晦涩的概念。把Docker想象成一个超级现代化的自动化码头。
- Docker镜像 (Image):就像是船的蓝图。它定义了这艘船应该是什么样子、有多少层甲板(文件系统)、预装了哪些设备(应用依赖)。
- Docker容器 (Container):就是根据这份蓝图真正建造并下水的船。它是蓝图的运行实例,是活的、正在执行任务的实体。
所以,docker run命令的本质是:根据一份蓝图(镜像),在码头上快速造一艘船(创建容器),并立刻让它启航(启动容器内的主进程)。
这个过程看似简单,实则内部经历了三个精密的阶段:
- 创建容器文件系统:基于镜像的只读层,为其创建一个可写的薄薄顶层(容器层),形成联合文件系统。
- 分配资源并隔离:为容器分配网络接口、IP地址、设置内核命名空间(Network, PID, IPC等)和控制组(cgroups)以限制资源。
- 执行启动命令:在容器内部执行指定的入口命令(如
/bin/bash、npm start),这条命令的PID号为1,它的生命周期就代表了容器的生命周期。
第二章:船长的高级指挥旗(核心参数详解)
光会docker run只是水手,精通参数才是船长。让我们升起那些关键的旗帜:
-it:交互式航行的通行证
-
-i(--interactive):保持标准输入(STDIN)打开,允许你向容器发送命令。-t(--tty):分配一个伪终端(pseudo-TTY),让你获得一个

最低0.47元/天 解锁文章
6万+

被折叠的 条评论
为什么被折叠?



