docker
Docker 是一种开源的容器化平台,用于构建、打包和运行应用程序。它提供了一种轻量级的虚拟化技术,允许应用程序及其依赖项以容器的形式进行打包,并在不同的环境中进行部署和运行,而无需担心环境之间的差异和依赖问题。
容器是一种独立于底层操作系统的软件包,其中包含应用程序及其运行所需的所有组件,如代码、运行时环境、系统工具、库和配置。容器化应用程序可以在任何支持容器技术的主机上运行,无论是开发环境、测试环境还是生产环境,都能保持一致的行为和性能。
Docker 的核心组件包括:
- Docker 引擎:Docker 引擎是 Docker 的核心组件,负责构建、运行和管理容器。它包括一个守护进程,可以与 Docker 客户端进行交互,并处理容器的创建、启动、停止和删除等操作。
- 镜像(Image) :镜像是容器的构建块,它是一个只读的模板,包含了运行容器所需的文件系统、应用程序代码、运行时环境和依赖项。可以通过 Dockerfile 来定义和构建镜像,或者从 Docker Hub 等镜像仓库中获取现有的镜像。
- 容器(Container) :容器是镜像的实例化运行态,它是一个独立、可执行的进程,具有自己的文件系统、网络和进程空间。可以通过运行镜像来创建容器,容器可以被启动、停止、暂停、恢复和删除,注意容器与容器之间,容器与主机之间都是相互隔离的,互不影响。
- 仓库(Repository) :仓库是用于存储和分享镜像的地方。Docker Hub 是一个公共的 Docker 镜像仓库,您可以在其中找到许多常见的镜像。此外,您也可以搭建私有的仓库来管理和共享自己的镜像。
Docker 的优点包括快速、可移植、轻量级和灵活等。它简化了应用程序的开发、部署和扩展过程,提高了开发团队的协作效率,并实现了更高的资源利用率。
二、实战——通过docker进行构建、打包和运行
1.首先,在项目的根目录下创建一个Dockerfile文件
# 使用 Node.js 作为基础镜像
FROM node:18.16.0-alpine
# 创建工作目录
# RUN mkdir -p /hsxa
# 设置工作目录
WORKDIR /hsxa
# 复制 package.json 和 package-lock.json 文件到工作目录
COPY package*.json ./
# 安装项目依赖
RUN npm install
# 安装pm2
RUN npm install pm2 -g
# 复制整个项目到工作目录
COPY . .
EXPOSE 3000
# 构建前端程序
RUN npm run build
# 启动
# RUN pm2 start ecosystem.config.js
# 设置容器启动命令
CMD [ "pm2-runtime","start","ecosystem.config.js" ]
# 因为在这个项目中用的是 pm2 所以这么写
在vue中:
# 使用 Node.js 作为基础镜像
FROM node:14-alpine
# 设置工作目录
WORKDIR /app
# 复制 package.json 和 package-lock.json 文件到工作目录
COPY package*.json ./
# 安装项目依赖
RUN npm install
# 复制整个项目到工作目录
COPY . .
# 构建前端程序
RUN npm run build
# 设置容器启动命令
CMD [ "npm", "start" ]
2.打包 docker 镜像: docker build -t 镜像名 .
3.使用镜像创建容器并运行该容器: docker run -i -t --name 容器名 -p 宿主机端口:容器端口 -d 镜像名
(注!!!!!:宿主机端口是在运行docker镜像后,访问的接口;容器的端口是上传的项目的端口)
3.查看镜像: docker images
4.给镜像打 tag 版本号: docker build -t 镜像名:版本号 .
5.下面是docker的一些基本操作
docker rmi //删除镜像
docker push //上传镜像
#容器命令
# 新建容器并启动
$ docker run [镜像名/镜像ID]
# 启动已终止容器
$ docker start [容器ID]
# 列出本机运行的容器
$ docker ps
# 停止运行的容器
$ docker stop [容器ID]
# 杀死容器进程
$ docker kill [容器ID]
# 重启容器
$ docker restart [容器ID]
!! 注意:不要拉下命令中的 `.` !!