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 构建镜像。


目录
相关文章
|
1月前
|
关系型数据库 MySQL Java
Docker Compose详细教程(从入门到放弃)
Docker Compose详细教程(从入门到放弃)
331 0
|
1月前
|
存储 虚拟化 数据中心
Docker容器化应用程序的入门指南
【4月更文挑战第28天】
125 0
|
26天前
|
Shell iOS开发 Docker
|
1月前
|
Ubuntu 应用服务中间件 Shell
Docker入门
Docker入门
37 0
|
1月前
|
存储 Ubuntu Linux
Docker 从入门到实践:Docker介绍
Docker 从入门到实践:Docker介绍
|
1月前
|
应用服务中间件 持续交付 nginx
【Docker专栏】Docker入门指南:快速构建你的第一个容器
【5月更文挑战第7天】Docker 入门指南:容器化应用利器。了解 Docker 核心概念——镜像、容器和仓库。安装 Docker 后,运行官方 `hello-world` 验证安装,再尝试运行 `nginx` Web 服务器。通过端口映射访问容器内服务,学习管理容器命令。创建自定义镜像,编写 Dockerfile,实现 Python Web 应用容器化。Docker 助力高效开发与运维,探索更多自动化部署与微服务场景。
【Docker专栏】Docker入门指南:快速构建你的第一个容器
|
1月前
|
安全 Linux 数据库
Docker 入门详解
通过遵循这些步骤,你将能够快速入门 Docker 并开始探索容器化的世界,关注 V 哥,技术之路一起成长。
|
1月前
|
存储 Apache Swift
无限套娃_docker入门(镜像、容器、仓库)
无限套娃_docker入门(镜像、容器、仓库)
55 0
|
1月前
|
Linux 虚拟化 Docker
docker入门
docker入门
29 2
|
1月前
|
存储 运维 Docker
Docker从入门到精通:Docker 容器数据卷详解
Docker 数据卷是持久化容器数据的关键机制,允许跨容器或主机共享,即使容器删除数据仍保留。创建数据卷可通过命令行或容器启动时指定,挂载到容器目录以读写。使用 `docker volume` 命令可管理数据卷,适用于持久化存储、数据共享及备份场景。了解和善用数据卷能优化 Docker 应用程序的运维。
120 0