Docker 入门(二)

简介: Docker 入门(二)


上一篇文章 Docker 入门(一)简单讲述了 docker 中的一些基本概念。文本将会重点讲述 image 镜像的内容。



01


镜像



Docker 中的镜像到底是什么?它是一个可供执行的文件系统包,里面包含了运行一个应用程序所需要的代码、库、环境变量和配置文件等等所有内容。



镜像是分层的。它是由一个或多个文件系统叠加而成,最底层是 bootfs 即引导文件系统,我们几乎永远不会与这个东西有什么交互,而且当容器启动时 bootfs 会被卸载掉。第二层是 rootfs ,通常是一个操作系统,其包含了程序运行所需的最基本环境,也称之为基础镜像。第三、第四、第N层,是由我们自己指定的其它资源文件。


镜像层层叠加,向下引用依赖,而 docker 使用了联合加载技术同时加载多层文件系统,使我们可以一起看到所有的文件及其资源,仿佛其并没有被分层,而是一个文件系统一样。


镜像是只读的,也就意味着其无法被更改,这正是保证环境一致性的关键原因。


容器则是镜像的运行时,会在镜像最外层加载一层读写层,这样便能进行文件的读写,但其不会对下层镜像的内容进行修改,应用程序只有通过容器才能启动并对外提供服务。



02


构建镜像



首先需要准备我们的项目代码:



编写 Dockerfile 文件:


在 Dockerfile 中,我们指定了基础镜像、声明了镜像的基础信息,指定了镜像的工作目录,把项目文件添加到了镜像中,指定了环境变量,暴露了容器端口,指定了容器启动后执行的命令。


在复制文件时,我们可以通过 .dockerignore 指定忽略复制到镜像中的文件,用法与 .gitignore 类似。


读者可以仔细阅读上图 Dockerfile 中的注释。


输入指令:

docker build --build-arg NODE_ENV=develop -t docker-demo .

通过 -t 指定了镜像的标签,--build-arg 指定了 Dockerfile 中的 ARG 声明的变量,也就是 ENV 环境变量,至此我们就成功的构建了自己的镜像。由于网络原因拉取镜像可能会很慢,读者可以使用 DaoCloud 提供的加速地址(其官网的加速器就是)。


输入命令:

docker run --name demo -it -p 9999:8888 docker-demo

通过 --name 指定容器的别名,-p 指定宿主机与容器之间端口的映射,至此我们基于刚刚构建的镜像启动了一个容器,而容器就是镜像的运行时,最后我们在自己的宿主机上访问 localhost:9999 就能连接到 docker 容器内的 web 示例服务了。



03


结语


镜像是只读的、分层的文件系统,容器是镜像的运行时。重点关注通过 Dockerfile 构建镜像。


目录
相关文章
|
11月前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
465 2
|
2月前
|
运维 Kubernetes 开发者
解锁现代开发与部署:Docker入门指南
解锁现代开发与部署:Docker入门指南
155 100
|
16天前
|
监控 Kubernetes 安全
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
蒋星熠Jaxonic,技术探索者,以代码为笔,在二进制星河中书写极客诗篇。专注Docker与容器化实践,分享从入门到企业级应用的深度经验,助力开发者乘风破浪,驶向云原生新世界。
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
|
3月前
|
NoSQL 安全 Redis
Docker Compose :从入门到企业级部署
Docker Compose 是用于定义和运行多容器应用的工具,支持服务、网络和卷三大核心要素。通过简洁的 YAML 文件,可实现应用的快速部署与管理,适用于开发、测试及生产环境。
235 0
|
Kubernetes Cloud Native 云计算
云原生入门:从Docker到Kubernetes的旅程
【10月更文挑战第2天】本文将带你走进云原生的世界,从基础的Docker容器技术开始,逐步深入到Kubernetes集群管理。我们将通过实际代码示例,探索如何利用这些工具构建、部署和管理现代云应用。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的知识和技能,让你在云原生领域迈出坚实的一步。
223 5
|
7月前
|
Ubuntu Linux Docker
Docker 入门全攻略:安装、操作与常用命令指南
Docker 的世界非常广阔,这只是一个开始,请继续探索和学习 Docker 的高级特性和最佳实践。后续也会继续更新相关的理论与实践内容。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
10月前
|
Ubuntu 应用服务中间件 nginx
docker入门-快速学会docker
本文介绍了Docker的基本概念,包括镜像、容器、tar文件、Dockerfile和仓库,并通过实际操作演示了如何使用Docker。从拉取Nginx镜像、运行容器、修改容器内容、保存容器为新镜像,到使用Dockerfile构建自定义镜像,最后讲解了如何保存和恢复镜像。文中还推荐了一个在线实践平台Play with Docker,方便读者快速上手Docker。
881 5
docker入门-快速学会docker
|
Linux 持续交付 Docker
掌握Docker:从入门到实践
Docker 是一个开源容器引擎,允许开发者将应用及其依赖打包成可移植的容器,在任意 Linux 机器上运行。本文从基本概念入手,详细介绍 Docker 的安装、基本操作、镜像构建及 Docker Compose 的使用,并通过实战案例展示如何部署 Web 应用、构建微服务架构及实现 CI/CD。通过学习,你将掌握 Docker 的核心功能,提升应用开发和部署效率。
|
11月前
|
Kubernetes Linux Docker
容器化技术Docker入门与实践
容器化技术Docker入门与实践
181 20
|
11月前
|
运维 Kubernetes Cloud Native
云原生技术入门:Kubernetes和Docker的协同工作
【10月更文挑战第43天】在云计算时代,云原生技术成为推动现代软件部署和运行的关键力量。本篇文章将带你了解云原生的基本概念,重点探讨Kubernetes和Docker如何协同工作以支持容器化应用的生命周期管理。通过实际代码示例,我们将展示如何在Kubernetes集群中部署和管理Docker容器,从而为初学者提供一条清晰的学习路径。