构建镜像与常用命令

5 阅读4分钟

🔨 构建镜像与常用命令

首先,核心的构建命令如下。请确保在终端中切换到 Dockerfile 所在的目录(通常是项目根目录)再执行:

docker build --progress=plain -t presenton:latest -f Dockerfile .

下面的表格详细解释了命令中各个参数的含义,以及一些其他常用的构建选项:

命令/选项说明示例
**docker build**​用于根据 Dockerfile 构建镜像的核心命令。-
**-t presenton:latest**​为构建成功的镜像命名和打标签。-t是 --tag的缩写。-t my-app:v1
**-f Dockerfile**​指定要使用的 Dockerfile 路径。如果文件名就是 Dockerfile且在当前路径,可省略。-f ./deploy/Dockerfile.backend
.构建上下文路径。Docker 引擎会将此路径下的文件打包,在 Dockerfile 中如 COPY等指令才能访问这些文件。非常重要,不要遗漏。通常为当前目录 .
**--no-cache**​构建时不使用缓存,确保获取最新的依赖(如从 npm registry 拉取最新包)。docker build --no-cache -t ...
**--build-arg**​传递构建参数给 Dockerfile 中的 ARG指令。--build-arg INSTALL_OLLAMA=true

🔍 检查镜像是否构建成功

构建完成后,可以通过以下几步来验证镜像的状态和内容。

    确认镜像存在

    使用 docker images命令列出本地镜像,检查 presenton:latest是否在列表中。

    docker images presenton:latest
    

    检查镜像构建历史

    使用 docker history命令可以查看镜像的构建层,这有助于确认构建步骤是否符合预期。

    docker history presenton:latest
    

    检查镜像元数据

    使用 docker inspect命令可以获取镜像的详细配置信息,包括环境变量、暴露的端口、启动命令等。这是一个非常强大的诊断工具。

    docker inspect presenton:latest
    

🧪 验证镜像是否可以正常运行

确认镜像存在后,最关键的一步是运行它,看看服务是否正常启动。

    运行容器进行测试

    下面的命令会启动一个容器,并将容器的 80 端口映射到宿主机的 8080 端口,方便您通过浏览器访问 http://localhost:8080来测试 Next.js 和 FastAPI 服务。

    docker run -d -p 8080:80 --name presenton-test presenton:latest
    
    • -d: 后台运行容器。

    • -p 8080:80: 端口映射(宿主机端口:容器端口)。

    • --name presenton-test: 为容器起个名字。

    查看容器日志

    服务启动后,立即查看其日志,可以快速判断是否报错。

    docker logs presenton-test
    

    进入容器内部检查(可选)

    如果日志不清晰,可以进入容器内部,像在普通 Linux 系统里一样检查文件、进程和环境变量。

    docker exec -it presenton-test /bin/bash
    # 进入后,可以检查文件是否复制到位,例如:
    ls -l /app/servers/nextjs/.next-build/standalone
    ls -l /app/servers/fastapi/
    ps aux
    

    停止并清理测试容器

    测试完毕后,记得清理资源。

    docker stop presenton-test
    docker rm presenton-test
    

📦 将镜像打包分发

确认镜像一切正常后,就可以将它打包分发给同事了。

    将镜像保存为文件

    使用 docker save命令将镜像打包成一个单独的 .tar文件。这个文件包含了镜像的所有层和元数据。

    docker save -o presenton-latest.tar presenton:latest
    

    (强烈推荐)压缩文件

    生成的 .tar文件通常比较大,使用 gzip压缩可以显著减小文件体积,方便传输。

    gzip presenton-latest.tar
    

    这将会生成一个 presenton-latest.tar.gz文件。

    同事如何加载镜像

    您的同事在收到压缩包后,只需要执行以下两步即可:

    • 解压(如果压缩了)

      gunzip presenton-latest.tar.gz
      
    • 加载镜像

      docker load -i presenton-latest.tar
      

      加载成功后,他就可以像使用其他镜像一样,通过 docker run命令来启动容器了。

💡 实用提醒

  • 镜像大小:您这个镜像包含了 Node.js、Python、Chromium 等,压缩包体积可能会很大(可能超过 1GB),传输前请有心理准备。

  • 文档说明:发给同事时,最好附上一个简短的说明,包括镜像名称、版本、以及如何运行(例如必要的端口映射、环境变量等)。

  • 替代方案:对于团队协作,长期来看,搭建私有的 Docker 镜像仓库(如 Harbor、Nexus)或使用 Docker Hub 的私有仓库是更高效的镜像分发方式。

希望这份详细的指南能帮助您顺利完成镜像的构建、验证和分发!如果您在任何一个步骤遇到问题,可以随时再来问我。