Dockerfile和docker-compose
Dockerfile基础
Dockerfile是用来自动化创建Docker镜像的脚本文件,通过编写Dockerfile文件,可以自动化构建过程,减少手动操作,确保环境一致性,在Dockerfile中常见的命令有:FROM(指定基础镜像)、RUN(执行命令)、COPY/ADD(拷贝文件)、WORKDIR(设置工作目录)、CMD/ENTRYPOINT(指定容器启动时的命令)、EXPOSE(指定暴露的端口)、ENV(设置环境变量)。
列如下方是一个Dockerfile示例:
# 第一阶段:构建阶段
FROM node:14 AS builder
WORKDIR /app
COPY . .
RUN npm install
# 第二阶段:运行阶段
FROM node:14
WORKDIR /app
COPY --from=builder /app /app
CMD ["npm", "start"]
配置好dockerfile脚本后,就可以通过一下命令构建镜像并启动容器
# 构建镜像llmops-ui:1.0.1
docker build -f llmops-ui/Dockerfile -t llmopps-ui:1.0.1 llmops-ui/
# 运行构建好的镜像
docker run -d -p 5173:80 --name llmops-ui llmops-ui:1.0.1
# 进入到Docker容器内部
docker exec -it llmops-ui /bin/sh
但是在整个项目中会用到多个Docker容器,如果逐个容器去启动+运行,并且有可能容器之间会有依赖关系,需要按照特定的顺序启动,手动操作起来非常麻烦,这时可以使用docker-compose工具来定义和运行多容器
docker-compose基础
Docker Compose是一个用于定义和运行多容器Docker应用的工具。使用Compose,我们可以通过一个YAML配置文件(docker-compose.yml)来定义所有的服务、网络和卷等。然后,通过一个人简单的命令docker-compose up, 我们就能够启动所有相关的容器服务,通过docker-compose down, 就可以一键卸载所有关联的容器服务。
要想使用Docker Compose 工具,需要配置一个docker-compose.yaml 文件,该配置文件用于描述容器的服务、网络、卷等。我们通过YAML格式定义来定义该文件,列如下方是一个docker-compose.yaml文件的基本实例:
version: '3' # 定义 compose 文件的版本
services:
web:
image: nginx # 使用nginx官方镜像
ports:
- "8080:80" # 将容器的80端口映射到宿主机的8080端口
networks:
- my_network
db:
image: postgres:alpine # 使用postgres官方镜像
environment:
POSTGRES_PASSWORD: example # 设置环境变量
networks:
- my_network
networks:
my_network: #自定义网格定义
driver: bridge # 使用bridge网络驱动
编写 docker-compose.yaml配置也非常简单,常见的配置如下:
- version: 指定docker-compose.yml的版本。通常我们使用的是3.x版本系列
- services: 定义了所有的容器服务。每个服务代表一个容器。服务可以是镜像的引用,也可以通过build来从Dockerfile构建镜像。
- image: 指定容器使用的镜像。可以是从Docker Hub或其他仓库拉取的镜像
- build: 指定构建镜像的上下文路径,如果是自己编写Dockerfile构建镜像时需要指定
- environment: 定义环境变量,这些环境变量将传递给容器
- volumes: 挂载宿主机目录或者Docker卷到容器内部,常用于持久化数据
- ports: 定义容器端口与宿主机端口的映射
- networks: 定义服务之间的网络配置,每个服务可以连接到一个或多个网络
- volumes: 定义数据卷,用于容器之间共享数据或持久化数据
除了配置项之外,docker-compose还通过一系列的命令来执行相应的服务,命令如下:
- 启动服务
docker-compose up
该命令会启动docker-compose.yml中定义的所有服务。如果容器镜像不存在,会自动从Docker Hub拉取或根据Dockerfile构建镜像。
- 如果只想启动后台容器(不阻塞终端),可以加上 -d 参数:
docker-compose up -d
- 停止服务
docker-compose down
该命令停止并删除所有由docker-compose.yml启动的容器、网络和卷。
- 只停止容器但不删除容器,可以使用:
docker-compose stop
- 查看容器日志:
docker-compose logs
该命令用于查看所有服务的日志。如果只想查看某个服务的日志,可以指定服务名:
docker-compose logs web
- 重启服务
docker-compose restart
该命令用于重启所有服务的容器,如果只重启某一个服务,可以指定服务名:
docker-compose restart web
- 查看容器状态
docker-compose ps
该命令用于列出当前Compose环境中的容器状态,它会显示容器的状态、端口映射等信息。
- 构建镜像
如果服务使用build指令来构建镜像,可以使用:
docker-compose build
该命令会根据docker-compose.yml文件中的配置重新构建镜像
- 运行单个命令:
有时候你可能需要进入某个服务器。执行一些命令,比如查看容器内部的日志,或者执行数据库操作等。可以使用:
docker-compose exec <service_name> <command>
列如,要进入web容器的终端:
docker-compose exec web bash
更多推荐

所有评论(0)