一 环境配置
1.进入之前安装好的 Ubuntu,添加Docker源,依次输入以下命令:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
"deb [arch=amd64] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu \
$(lsb_release -cs) \
stable"
sudo apt update
配置完 Dock而 源之后,开始安装 Docker,命令如下:
sudo apt install -y docker-ce
检查 Docker 安装是否正常,可输入以下命令进行检查:
# 检查dockerd进程启动
service docker status
ps aux|grep docker
# 查看 Docker 版本
docker version
# 检查拉取镜像是否正常
docker pull mysql
docker images
2. 到你本地的python项目,查看需要的环境:
使用一次pip list获取版本号,把他们写进requirements.txt,例如:
然后写一个Dockerfile.txt文件,内容为:
# 指定基础映像
FROM python:3.10
RUN echo "deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster main" > /etc/apt/sources.list && \
echo "deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ buster main" >> /etc/apt/sources.list && \
apt-get update && \
apt-get install -y libsm6 libxext6 libxrender-dev
# 安装 libgl1-mesa-glx 软件包
RUN apt-get install -y libgl1-mesa-glx
# 设置工作目录
WORKDIR /app
COPY requirements.txt .
# 安装依赖项
RUN pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ --default-timeout=60 --no-cache-dir -r requirements.txt
# 复制 Python 文件和依赖项清单
COPY main.py .
# 指定容器启动命令
CMD ["python", "main.py"]
然后输入命令:
ren Dockerfile.txt Dockerfile
得到Dockerfile
最后文件结构这样分布:
二 docker使用
在wsl ubuntu里cd到你的文件夹。执行命令:
docker build -t your_image_name .
这里的your_image_name就是你的镜像名,我的镜像名为identify_circles,命令就是
sudo docker build -t identify_circles .
在这个命令中,.
表示当前目录。当你执行 sudo docker build -t identify_circles .
时,Docker 将会在当前目录中查找 Dockerfile,并使用其中的指令来构建一个名为 identify_circles
的镜像,丢了这个 . 会报错
之后执行:
sudo docker run -v <文件名>:/app your_image_name
比如:
sudo docker run -v main.py:/app identify_circles
这个命令把你py文件里需要用的文件所在的文件夹加到容器里
如果没有报错,就意味着加载成功了
我们可以通过以下命令来查看镜像和容器状态:
sudo docker images
sudo docker ps -a
-
sudo docker images
命令用于列出本地主机上的所有镜像。它将显示镜像的名称、标签、镜像 ID、创建时间以及所占用的存储空间等信息。这个命令可以帮助你查看已经下载或构建在本地的镜像。 -
sudo docker ps -a
命令用于列出本地主机上所有容器的信息,包括正在运行的容器和已经停止的容器。它将显示容器的 ID、名称、镜像、创建时间、状态等信息。这个命令可以帮助你查看当前所有的容器,并获取容器的状态和其他相关信息。
如果都没有问题,就可以打包成tar传输了
docker save -o <路径>.tar your_image_name
比如:
sudo docker save -o identify_circles.tar identify_circles
最后运行这个程序:
sudo docker run -it identify_circles
发现和windows上运行结果一致
谨记:把运行失败的镜像和容器删除,否则太占空间
sudo docker stop $(docker ps -aq)停止所有容器的运行
sudo docker rm $(docker ps -aq)删除所有容器
sudo docker rmi $(docker images -q)删除所有镜像