小白入门:如何在docker中运行python程序

这篇具有很好参考价值的文章主要介绍了小白入门:如何在docker中运行python程序。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

摘要:

1,编写Dockerfile制作镜像

 2,使用镜像创建容器

3,交互式运行容器/镜像修改

3.1 编辑

3.2保存

4,将镜像上传至DockerHub

 5,从DockerHub拉取镜像


摘要:

       本文仅涉及docker的基础使用。主要介绍如何在docker容器内运行python程序,以及一些相关问题及解决方法,例如:如何让容器启动后自动运行程序?如何二次修改镜像,如何进行文件挂载?如何将镜像上传至dockerhub?......        

      本文涉及到与DockerHub/DockerDesktop相关的一些操作需要搭梯子。。。

1,编写Dockerfile制作镜像

       为了在docker容器中运行python程序,首先要编写Dockerfile.txt文件,并以此来制作镜像。一般的我们将Dockerfile文件放置在python项目根目录下,如下图所示:

docker python,Docker技术,docker,python

一个简单的Dockerfile文件内容是这样的:

FROM python:3.7-slim

WORKDIR /work

COPY . /work

RUN pip install --no-cache-dir -r requirements.txt

# 如果不能自动运行请尝试加上:RUN chmod +x main.py

CMD ["python", "main.py"]

第一行表示使用python:3.7-slim为基础镜像(可以在dockerhub中找到,dockerhub是一个存放镜像的云仓库,类似于github)。

第二行表示在docker容器根目录下创建一个名为work的工作目录。

第三行表示将本机当前目录下的内容复制到容器工作目录。

第四行使得创建容器时自动安装项目依赖,本例中我们安装numpy。

                             docker python,Docker技术,docker,python

第五行使得容器启动后自动运行main.py。另外如果加了这句指令仍不能自动运行,请尝试加上我注释的代码RUN chmod +x main.py授予权限。

       编写好Dockerfile后开始制作镜像。首先运行DockerDesktop程序(请事先安装),之后在终端打开项目文件。

docker python,Docker技术,docker,python

 可以看到python项目内容以及我们编写的Dockerfile正在此目录内。使用如下指令构建镜像:

docker build -t <镜像名称> . -f Dockerfile.txt

docker python,Docker技术,docker,python

可以使用docker images指令查看存在镜像的信息,可以看到我们新创建的镜像

docker python,Docker技术,docker,python

 2,使用镜像创建容器

        如果需要进行数据卷挂载,需在这里进行。通俗的讲,数据卷挂载就是将容器中的一个文件(夹)和本机中的一个文件(夹)关联起来。例如容器中有一个文件夹A,本机中有一个文件夹B。那么B中内容同步在A中,容器内可见;容器中对A文件夹的内容进行修改也会同步在B文件夹,在本机可见。我们以挂载两个文件夹(input,output)分别用作程序输入输出为例。

使用如下指令构建容器(方括号指令可选)

docker run [--rm] [--name <容器名称>] [-v <本机文件夹路径>:<容器文件夹路径>] <镜像名称>

--rm 使得容器为一次性容器,程序运行结束后容器退出并销毁。如果需要容器后仍存在,请删除。

--name <容器名称> 是给容器命名,不添加系统会自动生成名称。

-v 进行数据卷挂载

当然还有很多其他的参数可选,如有需要请查阅官方文档。

容器启动后自动运行main.py,相应的本机挂载的文件夹中出现输出结果。

#main.py内容
import os
import numpy as np
print('hello docker')
print(np.zeros((3,3)))
files=os.listdir('/input')
with open('/output/temp.txt','w',encoding='utf-8') as f:
    for i in files:
        f.writelines([i+'\n'])

docker python,Docker技术,docker,python

docker python,Docker技术,docker,python

       可以看到容器启动后确实自动运行了main.py脚本。由于使用了--rm,所以程序运行结束后容器退出并销毁!

3,交互式运行容器/镜像修改

       如果需要修改一个已有镜像,需要用该镜像创建一个容器并在该容器中进行修改,最后将该容器保存为一个新镜像。

3.1 编辑

用如下指令交互式启动容器(启动容器运行bash终端):

docker run -it <镜像名称> /bin/bash

docker python,Docker技术,docker,python

注意,这里一定不能使用--rm,因为我们需要使用该容器创建新镜像。

       启动容器并进入bash终端后的过程就像是操作Linux命令行(docker容器就像是丐版Linux)。初始位于我们创建的工作目录下。

可以退到根目录看到整个文件系统全貌,其中就有我们创建的work工作目录。

docker python,Docker技术,docker,python

如果需要查看/修改某一文件我们需要借助nano工具,用如下指令下载(也可使用apt-get):

apt update       #更新软件源
apt install nano #安装

例如我想要查看main.py,那么进入所在目录后使用nano main.py即可。

docker python,Docker技术,docker,python

在如上界面可进行文件内容的编辑。

在容器中可以使用Linux指令进行各种操作,包括下载其他三方包,编辑文件(如上)等。

       哦对了,有时可能需要上传新文件(夹)至容器,这需要在容器外操作。先使用exit退出容器,然后使用如下指令复制文件(夹)到容器内。

docker cp <需上传的文件本机路径> <容器ID/容器名>:<文件上传位置(容器中路径)>

docker python,Docker技术,docker,python

       哦,补充一下,这里的路径格式和前面的不太一样,前面是Linux格式的,无所谓啦,直接复制文件路径粘贴即可。我之前好像是用Windows格式遇到过错才改为Linux格式,不过这次试又好了。。。

       其中容器ID或容器名可通过docker ps -a(查看所有容器)查看,或借助DockerDesktop提供的图形界面。上图中的docker start gracious_antonelli重新启动了容器,gracious_antonelli是容器名,docker exec -it gracious_antonelli交互式进入容器。

3.2保存

在容器中修改好镜像后使用exit退出容器,使用如下指令将该容器保存为一个新镜像:

docker commit <容器名> <新镜像名>

       使用新镜像启动容器发现程序不能自动运行了!这是因为前面交互式启动容器时设置成了容器启动后运行bash终端。我是这样解决的:以该镜像为基础镜像创建新镜像(编写新dockerfile并创建镜像)。

FROM docker_test
CMD ["python", "main.py"]
 docker build -t <新镜像名> . -f <Dockerfile.txt本机地址>

4,将镜像上传至DockerHub

首先要在DockerHub创建一个仓库:

docker python,Docker技术,docker,python

 docker python,Docker技术,docker,python

 docker python,Docker技术,docker,python

之后使用如下指令上传镜像,请确保你的DockerDesktop处于登录状态:

docker tag <待上传镜像名> <DockerHub仓库名>:<tag版本名>
docker push <DockerHub仓库名>:<tag版本名>

docker python,Docker技术,docker,python

docker python,Docker技术,docker,python

 5,从DockerHub拉取镜像

 使用如下指令拉取镜像:

docker pull <DockerHub仓库名>:<tag版本名>

docker python,Docker技术,docker,python

docker python,Docker技术,docker,python

可以按此方法拉取DockerHub上公开的其他镜像进行使用。

       Docker功能非常丰富,还有很多高级用法,本文只介绍了最最最基础的一部分,更深入的学习请参考官方文档。

最后啰嗦一嘴,小心你的C盘,哈哈哈。。。

 文章来源地址https://www.toymoban.com/news/detail-715325.html

到了这里,关于小白入门:如何在docker中运行python程序的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 《Docker快速入门(基础篇)》在Docker中运行Nginx

    前面5篇文章,对Docker的基础知识做了较充分介绍,这里对基础篇做收尾,本篇介绍Nginx。 此时,访问http://localhost:8888,发现访问失败。 失败原因: 容器启动失败,数据卷中少了nginx.conf配置文件。 解决办法: 重新创建一个Nginx容器,使用9000端口,容器命名为nginx1 将nginx1里面

    2024年02月09日
    浏览(41)
  • Docker入门之运行Nginx案例

    如果你直接安装会比较慢, 建议参照附录内容配置镜像之后再执行 命令解释 docker run 启动一个容器 -d 把容器镜像中需要执行的命令以daemon(守护进程)的方式运行 nginx 应用容器镜像的名称,通常表示该镜像为某一个软件 latest 表示上述容器镜像的版本,表示最新版本,用户可

    2024年02月14日
    浏览(33)
  • 【工具分享】如何在 PyCharm 中,运行Python 程序的时候,查看运行所需的时间 ?| 区块链 面试题:区块链技术中,链上数据存储有哪些方案?

      “痛苦和恐惧不是死亡,还有挽回的余地。”     🎯作者主页: 追光者♂🔥          🌸个人简介:   💖[1] 计算机专业硕士研究生💖   🌿[2] 2023年城市之星领跑者TOP1(哈尔滨)🌿   🌟[3] 2022年度博客之星人工智能领域TOP4🌟   🏅[4] 阿里云社区特邀专家博主🏅  

    2024年02月08日
    浏览(41)
  • 在Docker中运行Jenkins容器:从入门到实践

    Jenkins作为一个流行的持续集成和持续交付(CI/CD)工具,其强大的功能和广泛的插件支持使其成为自动化软件开发流程的首选。结合Docker容器化技术,可以轻松地在任何支持Docker的平台上部署和运行Jenkins,实现环境一致性、快速部署和易于管理的CI/CD环境。本文将详细介绍如何

    2024年04月29日
    浏览(37)
  • docker(四)运行java程序

    1、准备一个简单的java web程序,打成jar包之后上传到服务器上。 2、创建Dockerfile文件 以上命令涉及到宿主机的目录或者文件是相对dockerfile文件相对路径。 3、生成镜像 将jar包和Dockerfile文件上传到宿主机上,如下图: 执行以下命令,生成镜像。 其中demo-test代码镜像名称,.代

    2024年02月02日
    浏览(27)
  • 轻松上手Docker:学习如何创建和运行自己的Docker容器

    容器化技术,它是一种虚拟化技术,用于在计算机系统中隔离和运行应用程序。容器将应用程序及其所有依赖项打包到一个独立的、可移植的环境中,使其能够在不同的计算机或操作系统上运行。 容器的特点 :隔离性、轻量级、可移植性、弹性伸缩、生态系统。 目前最流行

    2024年02月04日
    浏览(53)
  • 【Docker】Linux中Docker技术入门与实战及实用的常规命令

    目录 一、引言 1. 说明: 2. Linux介绍 3. Docker简介 二、Docker三要素 1. 镜像(Image) 2. 容器(Container) 3. 仓库(Repository) 三、实现案例 1. 创建 2. 设置镜像 3. 开启设置 4. Docker安装 5. Docker使用及命令 每篇一获 Linux 是开源的,因此是免费的。 Web 主机仅需要支付技术支持即可安

    2024年02月01日
    浏览(42)
  • 入门Docker1: 容器技术的基础

    目录 服务器选型 虚拟机 基于主机(物理机或虚机)的多服务实例 基于容器的服务实例 Docker Docker三要素 Docker安装 Docker基本使用 基本操作 仓库+镜像 容器 在选择服务器操作系统时, Windows 附带了许多您需要付费的功能。 Linux 是开放源代码,可让用户免费使用。 对比 Linux 是开

    2024年01月16日
    浏览(45)
  • Docker入门指南: 创新的容器化技术

    Docker,一种创新的容器化技术,其主要目标是实现\\\"一次开发,到处运行\\\"。通过使用Docker,开发者可以在标准化的环境中进行工作,确保应用运行的一致性。 Docker是一个能够把开发的应用程序与它们所需要的环境进行打包,形成一个独立的、可移植的容器(Container)。然后,开

    2024年03月11日
    浏览(59)
  • docker运行java程序的Dockerfile

    2024年01月18日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包