- 首先使用conda命令将虚拟环境下的依赖包打包成yaml文件
命令:
conda env export -n 虚拟环境名称 > 要输出到yaml文件的路径
例如:
conda env export -n pcdms > ./environment.yml
2.创建DockerFile文件
FROM : 从dockerhub上找的docker镜像Linux系统,在此基础上构建
例如:FROM ubuntu:22.04
RUN:构建时执行命令
例如:RUN apt-get update && apt-get install -y python3
COPY:复制文件到镜像
例如:COPY . /app
WORKDIR:设置工作目录
例如:WORKDIR /app
ADD:类似COPY,支持自动解压
例如:ADD app.tar.gz /app
ENV:设置环境变量
例如:ENV PORT=8080
EXPOSE:声明暴露端口
例如:EXPOSE 8080
CMD:容器启动默认命令,不可覆盖
例如:CMD ["python", "app.py"]
ENTRYPOINT:容器启动入口,不可覆盖
例如:ENTRYPOINT ["python"]
VOLUME:挂载数据卷
例如:VOLUME ["/data"]
关键区分:
-
构建时 :
FROM,RUN,COPY,ADD(生成镜像层) -
运行时 :
CMD,ENTRYPOINT(容器启动时执行)
3.构建docker镜像
命令:docker build -t 容器名:版本号 .
例如:docker build -t pcdms:latest .
解释:在当前目录下的Dockerfile构建docker镜像
命令:docker build -t 容器名:版本号 -f Dockerfile所在路径 dockerfile所在目录
例如:docker build -t pcdms:latest -f pcdms-env-new/Dockerfile pcdms-env-new/
# 指定 Dockerfile
docker build -f Dockerfile.prod -t myapp:prod .
# 传递构建参数
docker build --build-arg VERSION=1.0 -t myapp .
# 不使用缓存(强制重新构建)
docker build --no-cache -t myapp .
# 查看构建历史
docker history myapp:1.0
# 1. 查看镜像层详情
docker inspect myapp:1.0
# 2. 进入容器排查问题
docker run -it --rm myapp:1.0 /bin/sh
# 3. 查看构建过程(详细模式)
docker build --progress=plain -t myapp .
# 4. 仅构建到某一层(调试用)
docker build --target builder -t myapp:builder .
4.docker给镜像打标签(防止覆盖旧容器,容器和版本号更新到latest时)
命令:docker tag 旧容器名称:版本号 容器名称:新版本号
例如:docker tag pcdms:latest pcdms:old