环境
- VMware Workstation Pro
- ubuntu-23.04
构建镜像
了解镜像层实现原理
- 完成下载的层被提取到主机系统特定的目录。
- 当你从镜像启动一个容器,会按特定顺序将所有层堆叠起来组成一个统一的文件系统。
- 当容器启动,使用chroot设置容器的根目录为这个统一文件系统的路径。
- 当统一文件系统被创建,还会为运行容器而单独创建一个目录,这个目录允许容器进行文件系统的修改而不影响原始的镜像层,这也使得从相同镜像可以允许多个容器。
创建基础镜像
- 启动ubuntu容器
docker run --name=base-container -ti ubuntu
root@d8c5ca119fcd:/
- 安装Node.js
apt update && apt install -y nodejs
node -e 'console.log("Hello world!")'
- 从容器创建镜像
docker container commit -m "Add node" base-container node-base
- 查看镜像层
docker image history node-base
- 从镜像启动容器
docker run node-base node -e "console.log('Hello again')"
- 移除创建镜像临时用的容器
docker rm -f base-container
基于基础镜像构建应用镜像
- 从基础镜像启动容器
docker run --name=app-container -ti node-base
- 写入应用程序
echo 'console.log("Hello from an app")' > app.js
- 容器内运行应用程序
node app.js
- 基于基础镜像构建应用镜像
docker container commit -c "CMD node app.js" -m "Add app" app-container sample-app
- 查看镜像层
docker image history sample-app
- 从应用镜像运行应用程序
docker run sample-app
- 移除临时创建的容器
docker rm -f app-container
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
2020-10-16 「建立个人知识库」写出我心(一百七十三)