前言
随着云计算技术的普及,Docker 已经成为了一个广泛应用的容器化技术。使用 Docker 可以方便地创建、部署、使用和管理容器,用于构建 Web 应用、数据库等等,对于前端开发人员而言,了解 Docker 的使用与原理,可以使我们更加高效地部署和管理我们的前端应用。
准备工作
在进入 Docker 镜像的制作前,我们需要先安装 Docker。Docker 的安装方式与不同操作系统版本略有不同,相信各位都已经自己查询过了。这里建议大家使用 Docker 官方提供的 Docker Compose 工具来管理和启动我们的容器,所以需要在安装 Docker 后额外安装 Docker Compose。另外,我们在本文的后半部分会以 Ghost 应用为例来构建 Docker 镜像,因此请提前准备好 Ghost 应用的代码。
开始构建镜像
编写 Dockerfile 文件
Docker 镜像的构建都是基于 Dockerfile 文件的,Dockerfile 文件中包含了一系列的指令,告诉 Docker 容器如何运行我们所需的应用。通常我们会先将要构建的应用的环境和依赖在 Docker 容器里搭建好,然后再部署我们的应用代码。比如,对于 Node.js 应用,我们需要安装 Node.js 环境和 npm 包管理工具。
-- -------------------- ---- ------- ---- -------------- ------- ---- ---- ------------- -- --- --- ------- ---- - - ------ ---- --- ------- --------
上面的 Dockerfile 文件中包含以下几个步骤:
- 第一行 FROM node:14-alpine,该指令告诉 Docker 从官方 Node.js 14 镜像的轻量级版本(Alpine)中构建新镜像。
- WORKDIR /app,设置工作目录。
- COPY package.json ./*,将 package.json 和 package-lock.json 文件从主机拷贝到容器中的工作目录下。
- RUN npm install,使用 npm 执行安装,将会把安装的 node_modules 文件夹复制到容器内。
- COPY . .,将主机的当前目录下的所有文件复制到容器中的工作目录下。
- EXPOSE 2368,指定容器监听的端口。
- CMD ["npm", "start"],设置容器启动命令。
构建镜像
编写好 Dockerfile 文件后,就可以开始构建 Docker 镜像了。使用以下命令完成构建镜像:
docker build -t <image_name> .
-t
参数是指定小写字母的镜像名称,可以自己任意取名。后面的“.”指的是在当前该 Dockerfile 所在的路径下执行构建。比如,以 Ghost 应用为例可以这样执行:
docker build -t ghost-image .
等待构建完成后就可以使用 docker images
命令查看到构建好的镜像了。
启动镜像
Docker 启动容器时,可以指定启动一个特定的镜像。使用以下命令启动我们的 Ghost 应用:
docker run -d -p 2368:2368 --name=ghost-container ghost-image
参数说明:
-d
参数表示在后台运行容器。-p 2368:2368
将主机的 2368 端口映射到容器内的 2368 端口。--name=ghost-container
指定容器的名称。ghost-image
是我们之前编译好的镜像名称。
查看容器
可以通过以下命令查看当前正在运行的容器:
docker ps
可以通过以下命令查看已经启动的所有容器:
docker ps -a
进入容器
如果需要进入容器内部,在终端中运行以下命令:
docker exec -it ghost-container /bin/sh
这里的 ghost-container
是上面启动容器时的名称,/bin/sh
表示使用进入到容器的 shell。
暴露端口
由于 Docker 镜像的启动默认是不对外公开的,因此在启动镜像时需要指定端口的映射,例如上面命令中的 -p 2368:2368
参数。
镜像的打包与推送
如果想在其他机器和环境中使用该镜像,需要将其打包并推送到 Docker Hub 或其它镜像服务器中。推送命令如下:
docker tag ghost-image <username>/ghost-image:v1.0.0 docker push <username>/ghost-image:v1.0.0
这里的 ghost-image
是我们之前编译好的镜像名称,<username>
表示 Docker Hub 用户名,v1.0.0
是我们打包的版本号。
总结
到此为止,我们就已经学会了如何一步步构建 Docker 镜像。Docker 是一个非常强大的工具,希望大家能够自己动手尝试,将自己的应用打包成镜像,以便更好地管理和部署。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6503fb9595b1f8cacd0ba2cc