用dockerfile制作tensorflow的镜像(附删除tag为「none」的镜像)

简介: 用dockerfile制作tensorflow的镜像(附删除tag为「none」的镜像)

用dockerfile制作tensorflow的镜像(附删除tag为的镜像)

刚接触集群和docker,不是太熟悉。自己尝试着用dockerfile创建了一个镜像,(还有一种方法是commit)在开始之前,也看了大量博客文章,用这种方法创建镜像可以根据自己的需要定制,不必装一些用不到的包和工具。它通过命令 built dockerfile 创建一个文本文件来执行你在里面写入的命令行。本文不详细介绍dockerfile的一些指令参数,因为可以根据你需要选择写入,用的时候再查就可以。这里直接通过实现一个其他博友写好的例子,自己做了进一步的阐述说明。

Dockerfile 创建镜像

一、创建一个存放Dockerfile文件的目录

创建目录

1.mkdir /一级目录名

2.mkdir /一级目录名/二级目录名

20200623104829521.png

进入目录创建文件

3.cd /一级目录名/二级目录名

4.vim Dockerfile(或用vi)

5.i 键进入编辑模式

20210104203500268.jpg

二、编写Dockerfile 文件

编写的内容:

FROM ubuntu:16.04 #基础镜像用ubuntu
#这里省略了维护者信息
#然后是RUN 命令
RUN  apt-get update #更新数据库
RUN  apt-get -u upgrade - #更新软件包 
# Install python3
RUN apt-get install -y python3 # -y代表不需要重复的确认安装
# Install  pip
RUN apt-get install -y wget vim  #安装 wget和vim编辑器
RUN wget -O/tmp/get-pip.py https://bootstrap.pypa.io/get-pip.py #下载到指定目录、指定文件名,从网上自动下载pip
RUN python3 /tmp/get-pip.py
RUN pip install --upgrade pip
RUN pip install -U tensorflow
#这里省略了CMD,也不知道为什么对镜像的构建没有影响

编辑完成后,按Esc 退出编辑 ,然后按

:wq!

强制退出保存

三、安装镜像

docker build -t 镜像名称 /一级目录名/二级目录名

1ecd1b2606ed46e9956a89f231c9802c.png

按照参考的博客,我到第9步这里会报错:

ERROR: Could not find a version that satisfies the requirement tensorflow (from versions: none

从网上搜了一下,是因为tensorflow没有指定版本。然后把dockerfile中最后一行改成下面这样就可以了。

pip install tensorflow==2.0

为了下载的快一点还可以加上国内镜像的链接,加在上面这句命令后面。

pip install tensorflow==2.0 -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

然后就不会报错了,看到Successfully

20210104203500268.jpg

四、通过镜像生成容器并运行

docker run -it 镜像名:标签(默认latest) /bin/bash

五、在容器的终端中,创建一个/test.py的文件

vi /test.py

test.py的内容如下:

import tensorflow as tf
print(tf.__version__)

运行/test.py

python3 /test.py

控制台输出:2.0.0

20210104203500268.jpg

此时证明镜像创建成功,我们可以通过 docker images 查看,镜像列表中会显示出我们新创建的镜像。

20210104203500268.jpg

在docker中删除tag为的镜像

查看镜像列表时总会有tag为的镜像,这是由于容器和镜像的关系没有删除干净。然后可以通过以下方法来删除。

1.查看所有镜像

docker images

1ecd1b2606ed46e9956a89f231c9802c.png

2.查看所有容器

Docker ps -a

1ecd1b2606ed46e9956a89f231c9802c.png

3.根据IMAGE ID 找到对应CONTAINER ID

执行 docker rm 7ac

再执行 docker rmi 99ecafed5428 就删除成功了

1ecd1b2606ed46e9956a89f231c9802c.png

本人小白一枚,如文章中有错误,希望博友可以帮忙指正,互相讨论互相学习!

相关文章
|
机器学习/深度学习 算法 搜索推荐
TensorFlow(1):使用Docker镜像搭建TensorFlow环境
TensorFlow(1):使用Docker镜像搭建TensorFlow环境
679 0
|
机器学习/深度学习 TensorFlow 算法框架/工具
构建Tensorflow RDMA的Docker镜像
RDMA是一个远程通讯技术,它通过Kernel bypass等方式降低数据传输中的延迟和CPU消耗。 在分布式训练中,由于多个Worker之间或者Worker和Paramater Server 之间需要大量传输模型变量。当GPU到达一定数量后,受制于网络带宽以及TCP协议的延迟,通讯往往会成为计算性能的瓶颈,而在分布式训练中使用RDMA技术能够非常明显地提高训练速度。 #### Tenso
4057 0
|
4月前
|
机器学习/深度学习 人工智能 算法
海洋生物识别系统+图像识别+Python+人工智能课设+深度学习+卷积神经网络算法+TensorFlow
海洋生物识别系统。以Python作为主要编程语言,通过TensorFlow搭建ResNet50卷积神经网络算法,通过对22种常见的海洋生物('蛤蜊', '珊瑚', '螃蟹', '海豚', '鳗鱼', '水母', '龙虾', '海蛞蝓', '章鱼', '水獭', '企鹅', '河豚', '魔鬼鱼', '海胆', '海马', '海豹', '鲨鱼', '虾', '鱿鱼', '海星', '海龟', '鲸鱼')数据集进行训练,得到一个识别精度较高的模型文件,然后使用Django开发一个Web网页平台操作界面,实现用户上传一张海洋生物图片识别其名称。
163 7
海洋生物识别系统+图像识别+Python+人工智能课设+深度学习+卷积神经网络算法+TensorFlow
|
4月前
|
机器学习/深度学习 人工智能 算法
【乐器识别系统】图像识别+人工智能+深度学习+Python+TensorFlow+卷积神经网络+模型训练
乐器识别系统。使用Python为主要编程语言,基于人工智能框架库TensorFlow搭建ResNet50卷积神经网络算法,通过对30种乐器('迪吉里杜管', '铃鼓', '木琴', '手风琴', '阿尔卑斯号角', '风笛', '班卓琴', '邦戈鼓', '卡萨巴', '响板', '单簧管', '古钢琴', '手风琴(六角形)', '鼓', '扬琴', '长笛', '刮瓜', '吉他', '口琴', '竖琴', '沙槌', '陶笛', '钢琴', '萨克斯管', '锡塔尔琴', '钢鼓', '长号', '小号', '大号', '小提琴')的图像数据集进行训练,得到一个训练精度较高的模型,并将其
56 0
【乐器识别系统】图像识别+人工智能+深度学习+Python+TensorFlow+卷积神经网络+模型训练
|
4月前
|
机器学习/深度学习 人工智能 TensorFlow
TensorFlow 是一个由 Google 开发的开源深度学习框架
TensorFlow 是一个由 Google 开发的开源深度学习框架
56 3
|
16天前
|
机器学习/深度学习 数据挖掘 TensorFlow
解锁Python数据分析新技能,TensorFlow&PyTorch双引擎驱动深度学习实战盛宴
在数据驱动时代,Python凭借简洁的语法和强大的库支持,成为数据分析与机器学习的首选语言。Pandas和NumPy是Python数据分析的基础,前者提供高效的数据处理工具,后者则支持科学计算。TensorFlow与PyTorch作为深度学习领域的两大框架,助力数据科学家构建复杂神经网络,挖掘数据深层价值。通过Python打下的坚实基础,结合TensorFlow和PyTorch的强大功能,我们能在数据科学领域探索无限可能,解决复杂问题并推动科研进步。
38 0
|
25天前
|
机器学习/深度学习 数据挖掘 TensorFlow
从数据小白到AI专家:Python数据分析与TensorFlow/PyTorch深度学习的蜕变之路
【9月更文挑战第10天】从数据新手成长为AI专家,需先掌握Python基础语法,并学会使用NumPy和Pandas进行数据分析。接着,通过Matplotlib和Seaborn实现数据可视化,最后利用TensorFlow或PyTorch探索深度学习。这一过程涉及从数据清洗、可视化到构建神经网络的多个步骤,每一步都需不断实践与学习。借助Python的强大功能及各类库的支持,你能逐步解锁数据的深层价值。
46 0
|
2月前
|
持续交付 测试技术 jenkins
JSF 邂逅持续集成,紧跟技术热点潮流,开启高效开发之旅,引发开发者强烈情感共鸣
【8月更文挑战第31天】在快速发展的软件开发领域,JavaServer Faces(JSF)这一强大的Java Web应用框架与持续集成(CI)结合,可显著提升开发效率及软件质量。持续集成通过频繁的代码集成及自动化构建测试,实现快速反馈、高质量代码、加强团队协作及简化部署流程。以Jenkins为例,配合Maven或Gradle,可轻松搭建JSF项目的CI环境,通过JUnit和Selenium编写自动化测试,确保每次构建的稳定性和正确性。
44 0
|
2月前
|
测试技术 数据库
探索JSF单元测试秘籍!如何让您的应用更稳固、更高效?揭秘成功背后的测试之道!
【8月更文挑战第31天】在 JavaServer Faces(JSF)应用开发中,确保代码质量和可维护性至关重要。本文详细介绍了如何通过单元测试实现这一目标。首先,阐述了单元测试的重要性及其对应用稳定性的影响;其次,提出了提高 JSF 应用可测试性的设计建议,如避免直接访问外部资源和使用依赖注入;最后,通过一个具体的 `UserBean` 示例,展示了如何利用 JUnit 和 Mockito 框架编写有效的单元测试。通过这些方法,不仅能够确保代码质量,还能提高开发效率和降低维护成本。
44 0
|
2月前
|
UED 开发者
哇塞!Uno Platform 数据绑定超全技巧大揭秘!从基础绑定到高级转换,优化性能让你的开发如虎添翼
【8月更文挑战第31天】在开发过程中,数据绑定是连接数据模型与用户界面的关键环节,可实现数据自动更新。Uno Platform 提供了简洁高效的数据绑定方式,使属性变化时 UI 自动同步更新。通过示例展示了基本绑定方法及使用 `Converter` 转换数据的高级技巧,如将年龄转换为格式化字符串。此外,还可利用 `BindingMode.OneTime` 提升性能。掌握这些技巧能显著提高开发效率并优化用户体验。
44 0

热门文章

最新文章

下一篇
无影云桌面