1、docker卷是持久化的方法,写一个python例子并打包,使用docker卷。
python功能是:随机5个1-10数,print并写入txt
给出完整python、docker的代码
2、python代码
# random_numbers.py
import random
numbers = [random.randint(1, 10) for _ in range(5)]
print("随机数字:", numbers)
with open("/data/numbers.txt", "w") as file:
file.write(", ".join(map(str, numbers)))
3、建文件夹
4、建Dockerfile,新建一个txt复制内容进去后,改名字,后缀。txt取消
# Dockerfile
FROM python:3.8-slim-buster
WORKDIR /app
COPY random_numbers.py /app/random_numbers.py
CMD ["python", "/app/random_numbers.py"]
5、
# 构建Docker镜像
docker build -t random-numbers .
# 创建一个新的卷
docker volume create mydata
# 运行容器并挂载卷
docker run --mount source=mydata,target=/data random-numbers
6、看到保存的结果啦
7、可以把txt文件保存到py文件同一个文件夹吗?
8、修改py
# random_numbers.py
import random
numbers = [random.randint(1, 10) for _ in range(5)]
print("随机数字:", numbers)
with open("numbers.txt", "w") as file:
file.write(", ".join(map(str, numbers)))
9、Dockerfile代码保持不变
10、
# 构建Docker镜像
docker build -t random-numbers .
# 运行容器
docker run random-numbers
# 在主机上创建一个文件夹
mkdir mydata
11、遇到bug,分别是使用windows的cmd命令和开docker读取本地的权限
运行到这一步的时候报错是为什么:C:\Users\Administrator\Desktop\docker2023.8.7\test9>docker run random-numbers
随机数字: [4, 10, 3, 3, 10]
C:\Users\Administrator\Desktop\docker2023.8.7\test9>mkdir mydata
C:\Users\Administrator\Desktop\docker2023.8.7\test9>docker run -v $(pwd)/mydata:/app random-numbers
docker: Error response from daemon: create $(pwd)/mydata: "$(pwd)/mydata" includes invalid characters for a local volume name, only "[a-zA-Z0-9][a-zA-Z0-9_.-]" are allowed. If you intended to pass a host directory, use absolute path.
See 'docker run --help'.
12、cmd
docker run -v %cd%/mydata:/app random-numbers
13、如果你正在使用PowerShell,可以使用:
docker run -v ${PWD}/mydata:/app random-numbers
14、
报错:C:\Users\Administrator\Desktop\docker2023.8.7\test9>docker run -v %cd%/mydata:/app random-numbers
docker: Error response from daemon: user declined directory sharing C:\Users\Administrator\Desktop\docker2023.8.7\test9\mydata.
See 'docker run --help'.
15、
这个错误表明Docker没有权限访问指定的目录。在Docker Desktop for Windows上,你需要确保你共享了该驱动器。以下是一些可能的解决方案:
共享驱动器:打开Docker Desktop设置,然后在“Resources”>“File Sharing”部分,添加或勾选包含你想共享的文件夹的驱动器。
重新启动Docker:有时更改设置后可能需要重新启动Docker Desktop才能生效。
使用管理员权限运行:如果上述方法不起作用,尝试使用管理员权限打开命令提示符或PowerShell,并再次运行命令。
确认安全提示:当你首次尝试共享驱动器时,可能会弹出一个安全提示,要求你输入凭据。确保你已接受共享请求,并输入正确的凭据(如果有提示)。
16、
17、
docker run -v %cd%/mydata:/app random-numbers
18、搞定,来一个难一点的
19、
docker卷是持久化的方法,写一个python例子并打包,使用docker卷。
python功能是:随机5个1-10数,print并写入excel文件,py文件保存在test10文件夹中。保存excel文件到py相同的文件夹。
给出完整python、docker的代码
20、
当然,让我们一步一步构建这个项目。
### 1. Python脚本 (`random_numbers.py`)
在`test10`文件夹中创建一个名为`random_numbers.py`的文件,并添加以下内容:
```python
import pandas as pd
import random
# 生成随机数字列表
numbers = [random.randint(1, 10) for _ in range(5)]
print("随机数字:", numbers)
# 创建一个DataFrame并保存到Excel文件
df = pd.DataFrame(numbers, columns=["随机数字"])
df.to_excel("random_numbers.xlsx", index=False)
```
此脚本将随机生成5个介于1和10之间的整数,打印这些数字,并将它们保存到名为`random_numbers.xlsx`的Excel文件中。
### 2. Dockerfile
在`test10`文件夹中创建一个名为`Dockerfile`的文件,并添加以下内容:
```dockerfile
# 使用适当的基础镜像
FROM python:3.8-slim-buster
# 安装必要的库
RUN pip install pandas openpyxl
# 设置工作目录
WORKDIR /app
# 复制Python脚本到容器中的工作目录
COPY random_numbers.py .
# 运行Python脚本
CMD ["python", "random_numbers.py"]
```
### 3. 构建和运行Docker容器
确保你的命令提示符或终端窗口位于包含这些文件的文件夹中,然后运行以下命令:
构建Docker镜像:
```bash
docker build -t random-numbers .
```
运行Docker容器,并将当前文件夹映射到容器的`/app`工作目录:
```bash
docker run --volume $(pwd):/app random-numbers
```
请注意,`$(pwd)`是Unix/Linux系统中的当前工作目录。如果你使用的是Windows命令提示符,可以尝试使用`%cd%`替换`$(pwd)`:
```bash
docker run --volume %cd%:/app random-numbers
```
完成后,你应该在你的`test10`文件夹中看到一个名为`random_numbers.xlsx`的新文件。
如果你遇到任何问题,请告诉我,我会尽力协助你!
22、