跳转到内容
新建笔记

环境保存

如何把自己的 conda 环境保存成 DOCKER 镜像?

要将 conda 环境保存为 Docker 镜像,您需要首先创建一个Dockerfile,然后在其中指定您的基础镜像和 conda 环境依赖关系。接下来是一个简单的步骤来完成此操作:

  1. 安装 Docker 并确保已启动 Docker 服务。

  2. 创建一个新的目录来存放Dockerfile:

    bashmkdir conda-docker
    cd conda-docker
  3. 使用文本编辑器创建一个名为Dockerfile的文件,将以下内容添加到文件中:

    终端窗口
    # 使用官方的Miniconda3基础镜像
    FROM continuumio/miniconda3
    # 设置工作目录
    WORKDIR /app
    # 复制当前conda环境的依赖关系到工作目录
    COPY environment.yml .
    # 安装conda环境
    RUN conda env create -f environment.yml
    # 激活conda环境
    RUN echo "source activate my_env" > ~/.bashrc
    ENV PATH /opt/conda/envs/my_env/bin:$PATH
    # 复制应用程序到工作目录(根据需要进行更改)
    COPY . /app
    # 配置CMD指令(根据需要进行更改)
    CMD ["python", "your_app.py"]

    请注意将my_env替换为您的 conda 环境名称。

  4. 在您的 conda 环境中,运行以下命令以导出环境依赖关系到environment.yml文件:

终端窗口
conda env export --name my_env > environment.yml

请注意将my_env替换为您的 conda 环境名称。

终端窗口
5.将生成的`environment.yml`文件移动到`conda-docker`目录中。
6.构建Docker镜像。在`conda-docker`目录中运行以下命令:
终端窗口
docker build -t my_conda_image .

请注意将my_conda_image替换为您想要为 Docker 镜像指定的名称。

7.现在您的Docker镜像已经创建好了,您可以通过运行以下命令来测试它:
终端窗口
docker run -it --rm my_conda_image

请注意将my_conda_image替换为您为 Docker 镜像指定的名称。

至此,您已经成功将 conda 环境保存为 Docker 镜像。您可以将此镜像推送到 Docker Hub 或其他容器注册中心,以便于在其他机器上使用和共享。


如何将正在使用的 ubuntu20.04 系统环境包括 conda 环境保存成 docker 镜像

要将正在使用的 Ubuntu 20.04 系统环境以及 Conda 环境保存为 Docker 镜像,可以按照以下步骤操作:

  1. 安装 Docker: 在开始之前,请确保已在系统中安装了 Docker。如果尚未安装,请遵循以下指令:

    终端窗口
    sudo apt update
    sudo apt install apt-transport-https ca-certificates curl software-properties-common
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
    echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    sudo apt update
    sudo apt install docker-ce

    启动 Docker 服务并使其在开机时自启动:

    终端窗口
    sudo systemctl enable docker
    sudo systemctl start docker
  2. 创建 Dockerfile: 在你的工作目录中创建一个名为 Dockerfile 的文件。这个文件将包含创建 Docker 镜像所需的所有指令。在本例中,我们将使用官方的 ubuntu:20.04 镜像作为基础镜像,并安装 Conda 和其他依赖项。

    打开文本编辑器,创建一个名Dockerfile文件,为 Dockerfile 的文件并添加以下内容:

    终端窗口
    # 使用官方 Ubuntu 20.04 镜像作为基础镜像
    FROM ubuntu:20.04
    # 设置维护者信息
    LABEL maintainer="your_email@example.com"
    # 避免在构建过程中出现交互式提示
    ARG DEBIAN_FRONTEND=noninteractive
    # 更新系统并安装基本依赖
    RUN apt-get update && \
    apt-get install -y wget curl bzip2 build-essential git
    # 安装 Miniconda
    RUN wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda.sh && \
    bash ~/miniconda.sh -b -p /opt/conda && \
    rm ~/miniconda.sh && \
    /opt/conda/bin/conda clean -tipsy && \
    echo ". /opt/conda/etc/profile.d/conda.sh" >> ~/.bashrc && \
    echo "conda activate base" >> ~/.bashrc
    # 设置环境变量以便在非交互式 shell 中使用 conda
    ENV PATH /opt/conda/bin:$PATH
    ENV CONDA_AUTO_UPDATE_CONDA=false
    # 创建你的 conda 环境并安装所需的软件包
    COPY environment.yml /tmp/environment.yml
    RUN conda env create -f /tmp/environment.yml && \
    conda clean --all --force-pkgs-dirs --yes && \
    rm -rf /tmp/environment.yml
    # 将你的应用程序代码复制到容器中
    COPY . /app
    # 如果需要,设置运行时的环境变量
    # ENV MY_ENV_VAR=my_value
    # 设置默认运行的命令(可选)
    # CMD ["your_command", "arg1", "arg2"]
    终端窗口

在完成 Dockerfile 编写后,请确保将其保存在项目的根目录下。

接下来,创建一个名为 environment.yml 的文件,将你的 Conda 环境依赖项包含在其中。例如:

name: my_env
channels:
- conda-forge
- defaults
dependencies:
- python=3.8
- pandas
- numpy
- scikit-learn
- pip
- pip:
- some-pip-package

将此 environment.yml 文件保存在项目的根目录下。

现在,可以使用 docker build 命令构建 Docker 镜像:

docker build -t my_project_image:latest .

此命令将在当前目录(.)中查找 Dockerfile 并构建名为 my_project_image 的镜像,版本标签为 latest。

构建完成后,可以使用 docker images 命令查看已创建的镜像。

要运行刚刚创建的 Docker 镜

构建完成后,可以使用 docker images 命令查看已创建的镜像。

docker images

在输出的列表中,你应该能看到名为 my_project_image 的镜像。

接下来,运行刚刚创建的 Docker 镜像。你可以使用 docker run 命令创建一个容器并运行该镜像:

docker run -it --name my_project_container -p 8888:8888 my_project_image:latest

在这个命令中:

  • -it 表示以交互模式运行容器。
  • --name my_project_container 为容器分配了一个名称,以便稍后可以轻松地引用它。
  • -p 8888:8888 是将容器内部的端口 8888 映射到主机的端口 8888(假设你的应用程序在端口 8888 上运行,如果不是,请更改为适当的端口)。
  • my_project_image:latest 是要运行的镜像名称和版本标签。

现在你的应用程序已经在 Docker 容器中运行了。要停止容器,可以使用以下命令:

docker stop my_project_container

如果需要删除容器和镜像,可以使用以下命令:

docker rm my_project_container
docker rmi my_project_image:latest

这将分别删除名为 my_project_container 的容器和名为 my_project_image 的镜像。

现在,你已经成功将 Ubuntu 20.04 系统环境以及 Conda 环境保存为 Docker 镜像,并运行了一个基于该镜像的容器。这使得你的项目易于部署和移植,确保在不同环境中的一致性。

接下来,我们将了解如何在多个计算机上共享和部署 Docker 镜像。为了实现这一目标,我们可以使用 Docker Hub 或其他容器注册表来存储和分发镜像。

  1. 创建 Docker Hub 账户(如果尚未拥有): 访问 Docker Hub 并注册一个新账户。如果已经拥有账户,请直接登录。

  2. 在本地计算机上登录 Docker Hub: 在命令行中运行以下命令,然后根据提示输入 Docker Hub 的用户名和密码:

docker login
  1. 为镜像添加标签: 为了将镜像推送到 Docker Hub,我们需要为其添加一个标签,包括你的 Docker Hub 用户名和所需的镜像名称。运行以下命令,替换 <your_dockerhub_username> 为你的 Docker Hub 用户名:

    docker tag my_project_image:latest <your_dockerhub_username>/my_project_image:latest
  2. 推送镜像到 Docker Hub: 使用以下命令将镜像推送到你的 Docker Hub 账户:

    docker push <your_dockerhub_username>/my_project_image:latest
  3. 在其他计算机上部署 Docker 镜像:

    现在你的镜像已经上传到 Docker Hub,你可以在其他计算机上轻松地拉取并运行它。在目标计算机上执行以下操作:

    • 确保已安装 Docker(参见步骤 1 中的安装说明)。

    • 使用 docker login 命令登录到 Docker Hub(如果尚未登录)。

    • 拉取你的 Docker 镜像:

    docker pull <your_dockerhub_username>/my_project_image:latest
  • 使用与步骤 3 中相同的 docker run 命令运行容器。

通过这些步骤,你已经成功地在另一台计算机上部署了你的项目。当你需要更新项目时,只需在原始计算机上重建 Docker 镜像,并使用相同的 docker tag 和 docker push 命令将其推送到 Docker Hub。在其他计算机上,使用 docker pull 命令更新镜像,并重新启动容器以应用更改。

通过使用 Docker 镜像,你可以确保在多个环境中轻松部


如何在 windows 的 docker 上构建一个 ubuntu 20.04 的系统,并安装使用 miniconda

要在 Windows 上的 Docker 中构建一个 Ubuntu 20.04 系统并安装 Miniconda,请按照以下步骤进行操作:

  1. 安装 Docker

首先,您需要在 Windows 系统上安装 Docker。请访问以下链接并按照说明进行操作: https://docs.docker.com/docker-for-windows/install/

  1. 创建 Dockerfile

在您选择的目录下,创建一个名为 Dockerfile(没有任何文件扩展名)的文件,然后将以下内容粘贴到其中:

# 使用官方的Ubuntu 20.04镜像作为基础镜像
FROM ubuntu:20.04
# 更新软件源并安装依赖库
RUN apt-get update && apt-get upgrade -y && apt-get install -y wget
# 设置工作目录
WORKDIR /opt
# 下载Miniconda安装脚本
RUN wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh
# 安装Miniconda
RUN bash miniconda.sh -b -p /opt/miniconda
# 将Miniconda的二进制文件添加到系统PATH
ENV PATH="/opt/miniconda/bin:${PATH}"
# 更新conda,安装必要的依赖库
RUN conda update -y conda && \
conda init && \
. /root/.bashrc && \
conda create -y -n myenv python=3.8 && \
conda clean -y --all
# 将新建的conda环境添加到系统PATH
ENV PATH="/opt/miniconda/envs/myenv/bin:${PATH}"
# 设置默认的Shell
SHELL ["/bin/bash", "--login", "-c"]
# 运行交互式容器时启动conda环境
CMD ["bash", "-c", ". /opt/miniconda/etc/profile.d/conda.sh && conda activate myenv && exec bash"]

将此代码粘贴到您的 Dockerfile 中,并保存文件。

现在,您应该能够在命令提示符或 PowerShell 中使用以下命令构建 Docker 镜像:

docker build -t ubuntu-miniconda:latest .

如果一切正常,您应该看到 Docker 镜像构建的输出。之后,您可以使用以下命令启动一个基于该镜像的 Docker 容器:

docker run -it --rm ubuntu-miniconda:latest
#重命名容器,并保留容器
docker run -it --name my_container ubuntu-miniconda:latest
  • docker run:这个命令用于运行一个新的 Docker 容器。
  • -it:这是两个参数的组合。-i表示以交互模式运行容器,-t表示分配一个伪终端,这使得您能够与运行中的容器互动。
  • --rm:当容器停止时,自动删除该容器。这意味着在容器内做的任何更改都不会被保留。如果您需要保留更改,请考虑使用 Docker 卷或在运行容器时省略--rm参数并使用docker stop和docker start命令来停止和启动容器。这样,您可以在不同的工作会话之间保留容器的状态。
  • ubuntu-miniconda:latest:这是您之前构建的 Docker 镜像的名称,包括基于 Ubuntu 20.04 的系统和 Miniconda 的安装。

运行此命令后,您将进入一个基于ubuntu-miniconda:latest镜像的新 Docker 容器,并在容器中打开一个 bash shell。您现在可以在这个容器里使用 Miniconda 来管理 Python 环境和安装 Python 包。

这将在容器中打开一个 bash shell,您可以在其中使用 Miniconda 管理 Python 环境和安装 Python 包。

这些创建好的镜像和容器存储的位置在哪

Docker 镜像和容器的存储位置取决于您的操作系统和 Docker 配置。

在 Windows 上,Docker Desktop 默认使用虚拟化技术(例如 WSL2 或 Hyper-V)在一个 Linux 虚拟机中运行 Docker。镜像和容器存储在虚拟机的文件系统中。

要找到 Docker 镜像和容器的存储位置,请按照以下步骤操作:

  1. 找到 Docker Desktop 使用的虚拟化技术。打开 Docker Desktop 设置,查看General(一般)选项卡。在这里,您应该可以看到 Docker Desktop 当前使用的虚拟化技术(例如 WSL2 或 Hyper-V)。

  2. 根据使用的虚拟化技术,找到相应的存储位置:

  • 对于 WSL2:打开 PowerShell 或命令提示符,输入wsl.exe,然后按回车键。这将打开默认的 WSL2 发行版。在 WSL2 中,Docker 镜像和容器通常存储在/var/lib/docker目录下。输入cd /var/lib/docker,然后按回车键以进入该目录。

  • 对于 Hyper-V:Docker 使用 Hyper-V 虚拟机时,镜像和容器的存储位置在一个虚拟硬盘(VHD)文件中。这个文件通常位于C:\Users\Public\Documents\Hyper-V\Virtual Hard Disks目录下。虚拟硬盘文件的名称可能是MobyLinuxVM.vhdx或类似的。要查看这个 VHD 文件的内容,您需要挂载它并浏览其中的文件系统。不过,这通常是不推荐的,因为直接操作 VHD 文件可能会破坏 Docker 的运行环境。

    请注意,直接访问和操作 Docker 镜像和容器的存储位置通常是不推荐的。相反,您应该使用 Docker 命令和工具(如docker和docker-compose)来管理镜像、容器、网络和卷。这些工具提供了一个稳定、安全且易于使用的接口,可以让您更有效地管理 Docker 资源。