惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

月光博客
月光博客
雷峰网
雷峰网
S
SegmentFault 最新的问题
博客园 - 【当耐特】
博客园_首页
量子位
爱范儿
爱范儿
博客园 - 叶小钗
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Jina AI
Jina AI
V
V2EX
美团技术团队
V
Visual Studio Blog
博客园 - 三生石上(FineUI控件)
IT之家
IT之家
Hugging Face - Blog
Hugging Face - Blog
Apple Machine Learning Research
Apple Machine Learning Research
小众软件
小众软件
博客园 - 聂微东
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
The Cloudflare Blog
宝玉的分享
宝玉的分享
WordPress大学
WordPress大学
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻

博客园 - Simle

OpenClaw 接入 Telegram 编程随想曲周刊(第82期) 编程随想曲周刊(第81期) Arduino自动安装ESP32开发包 Arduino手动安装ESP32开发包 编程随想曲周刊(第80期) Docker入门实践(五) Docker入门实践(四) Docker入门实践(三) Docker入门实践(二) Docker入门实践(一) Nginx入门实践(六) Nginx入门实践(五) Nginx入门实践(四) Nginx入门实践(三) Nginx入门实践(二) 编程随想曲周刊(第79期) 编程随想曲周刊(第78期) 编程随想曲周刊(第77期) Nginx入门实践(一)
Docker入门实践(六)
Simle · 2024-10-16 · via 博客园 - Simle

环境

  1. VMware Workstation Pro
  2. ubuntu-23.04

构建镜像

了解镜像层实现原理

  1. 完成下载的层被提取到主机系统特定的目录。
  2. 当你从镜像启动一个容器,会按特定顺序将所有层堆叠起来组成一个统一的文件系统。
  3. 当容器启动,使用chroot设置容器的根目录为这个统一文件系统的路径。
  4. 当统一文件系统被创建,还会为运行容器而单独创建一个目录,这个目录允许容器进行文件系统的修改而不影响原始的镜像层,这也使得从相同镜像可以允许多个容器。

创建基础镜像

  1. 启动ubuntu容器
docker run --name=base-container -ti ubuntu
root@d8c5ca119fcd:/#
  1. 安装Node.js
apt update && apt install -y nodejs

node -e 'console.log("Hello world!")'
  1. 从容器创建镜像
docker container commit -m "Add node" base-container node-base
  1. 查看镜像层
docker image history node-base
  1. 从镜像启动容器
docker run node-base node -e "console.log('Hello again')"
  1. 移除创建镜像临时用的容器
docker rm -f base-container

基于基础镜像构建应用镜像

  1. 从基础镜像启动容器
docker run --name=app-container -ti node-base
  1. 写入应用程序
echo 'console.log("Hello from an app")' > app.js
  1. 容器内运行应用程序
node app.js
  1. 基于基础镜像构建应用镜像
docker container commit -c "CMD node app.js" -m "Add app" app-container sample-app
  1. 查看镜像层
docker image history sample-app
  1. 从应用镜像运行应用程序
docker run sample-app
  1. 移除临时创建的容器
docker rm -f app-container