前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >@@docker卷的python应用2023.8.9

@@docker卷的python应用2023.8.9

作者头像
用户7138673
发布2023-08-16 21:56:06
2670
发布2023-08-16 21:56:06
举报
文章被收录于专栏:大大的小数据大大的小数据

1、docker卷是持久化的方法,写一个python例子并打包,使用docker卷。

python功能是:随机5个1-10数,print并写入txt

给出完整python、docker的代码

2、python代码

代码语言:javascript
复制
# 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取消

代码语言:javascript
复制
# Dockerfile
FROM python:3.8-slim-buster

WORKDIR /app

COPY random_numbers.py /app/random_numbers.py

CMD ["python", "/app/random_numbers.py"]

5、

代码语言:javascript
复制
# 构建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

代码语言:javascript
复制
# 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、

代码语言:javascript
复制
# 构建Docker镜像
docker build -t random-numbers .

# 运行容器
docker run random-numbers
# 在主机上创建一个文件夹
mkdir mydata

11、遇到bug,分别是使用windows的cmd命令和开docker读取本地的权限

代码语言:javascript
复制
运行到这一步的时候报错是为什么: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

代码语言:javascript
复制
docker run -v %cd%/mydata:/app random-numbers

13、如果你正在使用PowerShell,可以使用:

代码语言:javascript
复制
docker run -v ${PWD}/mydata:/app random-numbers

14、

代码语言:javascript
复制
报错: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、

代码语言:javascript
复制
这个错误表明Docker没有权限访问指定的目录。在Docker Desktop for Windows上,你需要确保你共享了该驱动器。以下是一些可能的解决方案:

共享驱动器:打开Docker Desktop设置,然后在“Resources”>“File Sharing”部分,添加或勾选包含你想共享的文件夹的驱动器。

重新启动Docker:有时更改设置后可能需要重新启动Docker Desktop才能生效。

使用管理员权限运行:如果上述方法不起作用,尝试使用管理员权限打开命令提示符或PowerShell,并再次运行命令。

确认安全提示:当你首次尝试共享驱动器时,可能会弹出一个安全提示,要求你输入凭据。确保你已接受共享请求,并输入正确的凭据(如果有提示)。

16、

17、

代码语言:javascript
复制
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、

代码语言:javascript
复制
当然,让我们一步一步构建这个项目。

### 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、

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-08-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大大的小数据 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档