Docker复习二月 6, 2026 - Docker - mac 安装 -> https://www.docker.com - Container 容器 - 运行代码的隔离环境,是被隔离的进程 - 文件系统被隔离 - 网络被隔离 - 进程空间被限制 - 资源被限制 - 共享宿主机内核 - 启动速度≈启动一个进程(速度快) - 是镜像的运行实例 - 包含内容 - 主进程 - 可写层 - 网络接口 - 挂载点 - 容器应该是单一职责进程 -  - 打开端口 -  - NetWork 网络 - Docker 默认创建虚拟网络 - 容器间可以用容器名互相访问,Docker 自动做服务发现 - Volumn 持久化数据 - volumnes (数据卷) - 是本地文件系统的一个由 docker 管理的位置 - 可以在容器被删除后仍然保留数据 - 容器的默认文件系统是临时、可销毁的,删除容器 = 数据丢失 - 容器内路径 <-> 宿主机目录 - 数据库容器一定要用 volumn - Image 镜像 - 不是压缩包,是只读的文件系统模板 - 包含内容 - 程序 - 依赖 - 运行环境 - 配置 - 是程序快照 - 容器从镜像中创建出来 - 实验 - 拉取并运行第一个容器 - docker run hello-world -  - docker 自动执行步骤 - 拉镜像 - 创建容器 - 运行程序 - 退出容器 - 运行一个长期存活的容器 - docker run -it ubuntu bash -  - 进入容器 shell - 执行 ps aux -  - 仅仅只有两个进程,说明不是完整的 linux 系统 - exit 退出 - 容器的主进程就是 bash, bash 退出,容器就结束 - 容器的生命周期 = 主进程生命周期 - 观察容器生命周期 - created -> running -> stopped -> removed - docker run -d nginx (后台启动 Nginx) -  - 查看容器 - docker ps -  - 停止容器 - docker stop <container_id> -  - 容器仍然存在,只是 stopped - 删除容器 - docker rm <container_id> - 删除容器 vs 删除镜像 - 查看镜像 -  - 删除镜像 - docker rmi nginx - 容器数据丢失实验 - docker run -it ubuntu bash - echo "hello" > test.txt - exit -  - 重新进入 docker run -it ubuntu bash -  - 文件消失,因为文件系统是临时层,删除容器后,数据就没了 - 使用 volume 持久化数据 - docker run -it -v mydata:/data ubuntu bash - mydata 是 docker 管理的数据卷,数据存在容器外,容器销毁也不影响 -  - 容器间通信 - 创建网络 docker network create mynet - 运行数据库 docker run -d --name db --network mynet nginx - 运行另外一个容器 docker run -it --network mynet ubuntu bash - 访问 nginx - apt update - apt install curl - curl db -  - dockerfile 部署项目 - 创建项目 -  - 写一个 Dockerfile -  - FROM 指定基础镜像,alpine=极小体积 Linux - WORKDIR /app 相当于 cd /app,后续所有操作都在这个目录,容器内工作目录标准写法 - COPY 把当前目录复制进镜像,左边宿主机,右边容器 - 打包的是代码 + 文件 - EXPOSE 声明端口,但是不开放,真正开放端口在 docker run - CMD 容器启动时执行的命令,容器只运行这个进程 - 构建镜像 - docker build -t my-app . -  - 查看镜像 -  - 运行容器 - docker run -p 3000:3000 my-app - 镜像分层 - Docker 每一行 Dockerfile 都生成一个 layer - 如果 RUN npm install 代码没变,Docker 会复用缓存 - 优化写法 -  - .dockerignore - 可以不把无关文件复制进镜像 - 停止并删除容器 -  - 容器是消耗品,应该删了重建,才是 Docker 的正确用法 - multi-stage build - 目标 - 让最终镜像只包含运行所需内容 - 不带编译工具、源码、构建缓存、开发垃圾 - 定义 - 在一个 Dockerfile 里面使用多个 FROM 阶段 - 前面阶段用来构建,最后阶段只保留运行产物 - 拆解 -  - builder 阶段,专门用来编译、构建、打包 - COPY --from 从 builder 阶段复制文件,只会复制构建产物 - runtime 阶段,最终镜像只包含 dist 运行文件 + node runtime - 国内镜像配置 -  容器原理#