Docker 镜像与容器入门指南

什么是 Docker?

Docker 是一种开源的容器化平台,它可以帮助开发人员和系统管理员更轻松地创建、部署和运行应用程序。Docker 使用容器来封装应用程序及其依赖项,使其可以在任何环境中运行。

与传统虚拟化技术不同,Docker 不需要虚拟化整个操作系统,而是只需要虚拟化应用程序及其依赖项。这使得 Docker 容器更加轻量级、易于部署和更加高效。

Docker 镜像

Docker 镜像是一个静态文件,它包含了一个完整的应用程序及其依赖项。Docker 镜像可以被认为是一个只读的模板,它可以用来创建 Docker 容器。

Docker 镜像可以通过 Dockerfile 来创建。Dockerfile 是一个包含了一系列指令的脚本,这些指令用来描述如何构建 Docker 镜像。下面是一个简单的例子:

---- --------------

------- ----

---- ------------- --

--- --- -------

---- - -

------ ----

--- ------- --------

这个 Dockerfile 描述了一个 Node.js 项目的构建过程。它从一个名为 node:12-alpine 的基础镜像开始,设置工作目录为 /app,复制 package*.json 文件到工作目录中,然后运行 npm install 命令安装依赖项,复制所有文件到工作目录中,暴露端口号 3000,并设置启动命令为 npm start

通过运行 docker build 命令,我们可以将这个 Dockerfile 构建成一个 Docker 镜像:

------ ----- -- ----------- -

这个命令会在当前目录下查找名为 Dockerfile 的文件,并将其构建成一个名为 my-node-app 的 Docker 镜像。

Docker 容器

Docker 容器是 Docker 镜像的运行实例。Docker 容器可以被认为是一个独立的、可执行的应用程序,它包含了应用程序及其依赖项的所有内容。

通过运行 docker run 命令,我们可以创建一个 Docker 容器:

------ --- -- --------- -----------

这个命令会创建一个名为 my-node-app 的 Docker 容器,并将容器内部的端口号 3000 映射到主机的端口号 3000 上。这样,我们就可以通过浏览器访问我们的 Node.js 应用程序了。

Docker Compose

Docker Compose 是一个用于定义和运行多个 Docker 容器的工具。通过使用 Docker Compose,我们可以轻松地定义和运行多个容器,并且可以通过一个单独的命令来启动、停止和删除这些容器。

下面是一个简单的 Docker Compose 配置文件的例子:

-------- ---

---------
  ----
    ------ -
    ------
      - -----------
  ---
    ------ ---------
    ------------
      -------------------- ------

这个配置文件定义了两个服务:一个名为 web 的服务,它构建自当前目录下的 Dockerfile,将容器内部的端口号 3000 映射到主机的端口号 3000 上;另一个名为 db 的服务,它使用 MySQL 5.7 镜像,并设置了一个名为 MYSQL_ROOT_PASSWORD 的环境变量。

通过运行 docker-compose up 命令,我们可以启动这两个服务:

-------------- --

这个命令会启动 webdb 两个服务,并将它们连接起来。我们可以通过运行 docker-compose ps 命令来查看当前正在运行的服务:

-------------- --

总结

Docker 是一个非常强大的容器化平台,它可以帮助我们更轻松地创建、部署和运行应用程序。通过学习 Docker 镜像和容器的基础知识,我们可以更加高效地使用 Docker,并且可以更加轻松地构建和部署我们的应用程序。

示例代码:

  • Dockerfile
---- --------------

------- ----

---- ------------- --

--- --- -------

---- - -

------ ----

--- ------- --------
  • docker-compose.yml
-------- ---

---------
  ----
    ------ -
    ------
      - -----------
  ---
    ------ ---------
    ------------
      -------------------- ------

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/66372b3ad3423812e4552a60