Docker 安装tensorflow
2017-10-31 20:39
344 查看
安装DOCKER
1.https://docs.docker.com/engine/installation/linux/docker-ce/ubuntu/
Gotohttps://download.docker.com/linux/ubuntu/dists/,chooseyourUbuntuversion,browseto
Note:Toinstallanedgepackage,changethewordLearnaboutstableandedgechannels.
1.
nstallfromapackage
IfyoucannotuseDocker’srepositorytoinstallDockerCE,youcandownloadthe.debfileforyourreleaseandinstallitmanually.YouwillneedtodownloadanewfileeachtimeyouwanttoupgradeDockerCE.
Goto
pool/stable/andchoose
amd64,
armhf,or
s390x.Downloadthe
.debfilefortheDockerversionyouwanttoinstall.
Note:Toinstallanedgepackage,changetheword
stableintheURLto
edge.
InstallDockerCE,changingthepathbelowtothepathwhereyoudownloadedtheDockerpackage.
$sudodpkg-i/path/to/package.deb
TheDockerdaemonstartsautomatically.
VerifythatDockerCEisinstalledcorrectlybyrunningthe
hello-worldimage.
$sudodockerrunhello-world
Thiscommanddownloadsatestimageandrunsitinacontainer.Whenthecontainerruns,itprintsaninformationalmessageandexits.
DockerCEisinstalledandrunning.Youneedtouse
sudotorunDockercommands.Continueto
2.
##UbuntuDocker可选配置
这部分主要介绍了Docker的可选配置项,使用这些配置能够让Docker在Ubuntu上更好的工作。
创建Docker用户组
调整内存和交换空间(swapaccounting)
启用防火墙的端口转发(UFW)
为Docker配置DNS服务
###创建Docker用户组
docker进程通过监听一个UnixSocket来替代TCP端口。在默认情况下,docker的UnixSocket属于
root用户,当然其他用户可以使用
sudo方式来访问。因为这个原因,docker进程就一直是
root用户运行的。
为了在使用
docker命令的时候前边不再加
sudo,我们需要创建一个叫
docker的用户组,并且为用户组添加用户。然后在
docker进程启动的时候,我们的
docker群组有了UnixSocket的所有权,可以对Socket文件进行读写。
注意:
docker群组就相当于root用户。有关系统安全影响的细节,请查看
创建
docker用户组并添加用户
使用具有
sudo权限的用户来登录你的Ubuntu。
在这过程中,我们假设你已经登录了Ubuntu。
创建
docker用户组并添加用户。
$sudousermod-aGdockerubuntu
注销登录并重新登录
这里要确保你运行用户的权限。
验证
docker用户不使用
sudo命令开执行
Docker
$dockerrunhello-world
创建用户组docker,可以避免使用sudo
将docker和wxl(王小雷用户名,在创建主机时默认用户名称是ubuntu)添加到一个组内
#默认是ubuntu用户 #wxl@wxl-pc:~$sudousermod-aGdockerubuntu #将wxl的用户添加到docker用户组中,如果多个用户需要用空格隔开如wxlwxl1wxl2用户 wxl@wxl-pc:~$sudousermod-aGdockerwxl
注意需要重新启动计算机或者注销用户再登入,才能生效。这样就不需要使用sudo命令了。
那么,如何将wxl从docker用户组移除?
sudogpasswd-dwxldocker
如何删除刚才创建的docker用户组?
sudogroupdeldocker
如何创建和删除新用户,如用户newuser
sudoaddusernewuser
sudouserdelnewuser
###调整内存和交换空间(swapaccounting)
当我们使用Docker运行一个镜像的时候,我们可能会看到如下的信息提示:
WARNING:Yourkerneldoesnotsupportcgroupswaplimit.WARNING:Your kerneldoesnotsupportswaplimitcapabilities.Limitationdiscarded.、
为了防止以上错误信息提示的出现,我们需要在系统中启用内存和交换空间。我们需要修改系统的GUNGRUB(GNUGRandUnifiedBootloader)来启用内存和交换空间。开启方法如下:
使用具有
sudo权限的用户来登录你的Ubuntu。
编辑
/etc/default/grub文件
设置
GRUB_CMDLINE_LINUX的值如下:
GRUB_CMDLINE_LINUX="cgroup_enable=memoryswapaccount=1"
保存和关闭文件
更新GRUB
$sudoupdate-grub
重启你的系统。
1.5.如何更新Docker
wxl@wxl-pc:~$sudoapt-getupgradedocker-engine
1.6.如何卸载Docker
wxl@wxl-pc:~$sudoapt-getpurgedocker-engine
2.运行一个web应用–PythonFlask
2.1.docker简单命令汇总如下:
dockerrunubuntu/bin/echo“helloworld”-运行ubuntu镜像并且在命令窗口输出”helloworld”dockerrun-t-iubuntu/bin/bash-进入ubuntu这个镜像的bash命令窗口,可以操作本镜像ubuntu的命令如ls
dockerps-列出当前运行的容器
dockerlogs-展示容器的标准的输出(比如helloworld)
dockerstop-停止正在运行的容器
dockerversion-可以查看守护的进程,docker版本以及go版本(docker本身是用go语言写的)
总结,可以看出docker的命令一般为
[sudo]docker[subcommand][flags][arguments]
如dockerrun-i-tubuntu/bin/bash
3.GPU需+额外:https://medium.com/@gooshan/for-those-who-had-trouble-in-past-months-of-getting-google-s-tensorflow-to-work-inside-a-docker-9ec7a4df945b
https://github.com/NVIDIA/nvidia-docker4.安装nvidia-docker
http://blog.csdn.net/u011987514/article/details/70943378
这一部分的官方教程:[plain]
#Installnvidia-dockerandnvidia-docker-plugin
wget-P/tmp
sudodpkg-i/tmp/nvidia-docker*.deb&&rm/tmp/nvidia-docker*.deb
官方提供的测试方法需要下载一个1G左右的镜像才能测试
这里只需要输入sudonvidia_dockerinfo测试一下即可
默认情况下Docker会把镜像安装在根目录下/var/lib/docker,这样镜像会大量占用系统盘空间,最终导致磁盘资源不足
解决方案是修改默认安装目录
由于我的/home磁盘资源比较多,所以都安装到/home去
[plain]
zcw@ubuntu:~#mkdirdocker
zcw@ubuntu:~#vim/etc/default/docker
添加配置信息
[plain]
DOCKER_OPTS="--graph=/home/docker"
保存退出
[plain]
servicedockerrestart
发现配置并没有生效
解决方案:
[plain]
zcw@ubuntu:~#mkdir-p/etc/systemd/system/docker.service.d
zcw@ubuntu:~#cat/etc/systemd/system/docker.service.d/Using_Environment_File.conf
如果没有该文件则自行创建,添加以下内容
[plain]
[Service]
EnvironmentFile=-/etc/default/docker
ExecStart=
ExecStart=/usr/bin/dockerdaemon-Hfd://$DOCKER_OPTS
载入配置重启服务
[plain]
zcw@ubuntu:~#systemctldaemon-reload
zcw@ubuntu:~#servicedockerrestart
查看配置是否生效
[plain]
zcw@ubuntu:~#ps-ef|grepdocker
Youneedatleasta384.xxseriesdriverforCUDA9.NVIDIArecommends384.81orlater.Ifyou'reinstallingfromdebpackages,notethatthepackagenameisdifferentfornvidia-384versusnvidia-375inorderthatthemajordriverversionupgradeisintentionalratherthanautomatic.
Alternatively,youcanalsouseaCUDA8.0imageandnotupgradeyourdriver:
nvidia-dockerrun--rmnvidia/cuda:8.0-develnvidia-smi
3.InstallDockerandnvidia-docker
#Installdocker curl-sSLhttps://get.docker.com/|sh
ThedockercontainerneedsaccesstotheGPUdevices.Forthispurposeuse`nvidia-docker`whichisawrapperaroundthestandard`docker`command.
#Installnvidia-dockerandnvidia-docker-plugin
wget-P/tmp'target='_blank'>https://github.com/NVIDIA/nvidia-docker/releases/download/v1.0.0-rc.3/nvidia-docker_1.0.0.rc.3-1_amd64.deb[/code] sudodpkg-i/tmp/nvidia-docker*.deb&&rm/tmp/nvidia-docker*.deb#Testnvidia-smi. nvidia-dockerrun--rmnvidia/cudanvidia-smi
Youmightneedtouse`nvidia-docker`withsudo!
安装Tensorflow
http://blog.csdn.net/cq361106306/article/details/54094517http://blog.csdn.net/freewebsys/article/details/70237003 http://blog.csdn.net/dream_an/article/details/55520205 下载tensorflow-gpu版本的源
dockerpulldaocloud.io/daocloud/tensorflow:0.11.0-gpu
先查下你有几个GPU设备[root@XXX~]#ls-la/dev|grepnvidia crw-rw-rw-.1rootroot195,0Sep1613:49nvidia0 crw-rw-rw-.1rootroot195,255Sep1613:49nvidiactl crw-rw-rw-.1rootroot247,0Sep1613:54nvidia-uvm
然后再查你的docker镜像y@y:~$sudodockerimages [sudo]passwordfory: REPOSITORYTAGIMAGEIDCREATEDSIZE daocloud.io/daocloud/tensorflow0.11.0-gpudd645f420f1d8weeksago2.713GB daocloud.io/daocloud/tensorflow0.10.0-devel-gpufa886c09638d3monthsago5.014GB hello-world
然后就可以启动咯
sudodockerrun-ti-v/home/:/mnt/home--privileged=true--device/dev/nvidia0:/dev/nvidia0--device/dev/nvidiactl:/dev/nvidiactl--device/dev/nvidia-uvm:/dev/nvidia-uvmdaocloud.io/daocloud/tensorflow:0.11.0-gpu/bin/bash
上面这句有点长把它写到docker.sh文件,然后shdocker.sh
完成。上面的意思是把本地的/home映射到docker的/mnt目录
以及各种显卡设备也映射进去主机保存镜像为新版本
sudodockerps-l
y@y:~$sudodockerps-l
CONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES
a1f2ac36a2c9daocloud.io/daocloud/tensorflow:0.11.0-gpu"/bin/bash"10minutesagoUp10minutes6006/tcp,8888/tcp
把a1f2ac36a2c9这个名字记住
然后dockercommita1f2ac36a2c9新名字
OK了
1.https://medium.com/@gooshan/for-those-who-had-trouble-in-past-months-of-getting-google-s-tensorflow-to-work-inside-a-docker-9ec7a4df945b 4.RunaTensorflowGPU-enableDockercontainer
Thecontaineritselfisstartedaspointedoutintheofficialdocumentationasfollows:#Runcontainer
nvidia-dockerrun-d--name<somename>-p8888:8888-p6006:6006gcr.io/tensorflow/tensorflow:latest-gpu#Login
nvidia-dockerexec-it<somename>bash
e.g.:nvidia-dockerrun-d--nametf1-p8888:8888-p6006:6006gcr.io/tensorflow/tensorflow:latest-gpunvidia-dockerexec-ittf1bash
Note:Port8888isforipythonnotebooksandport6006isforTensorBoard.
YoucantestifeverythingisalrightbyrunningthisPythonscript. 'target='_blank'>https://www.tensorflow.org/install/install_linux#InstallingDocker
GPUsupport
PriortoinstallingTensorFlowwithGPUsupport,ensurethatyoursystemmeetsallNVIDIAsoftwarerequirements.TolaunchaDockercontainerwithNVidiaGPUsupport,enteracommandofthefollowingformat: $nvidia-dockerrun-it-phostPort:containerPortTensorFlowGPUImage
where:
-phostPort:containerPortisoptional.IfyouplantorunTensorFlowprogramsfromtheshell,omitthisoption.IfyouplantorunTensorFlowprogramsasJupyternotebooks,setbothhostPortandcontainerPortto8888.
TensorFlowGPUImagespecifiestheDockercontainer.Youmustspecifyoneofthefollowingvalues:
gcr.io/tensorflow/tensorflow:latest-gpu,whichisthelatestTensorFlowGPUbinaryimage.
gcr.io/tensorflow/tensorflow:latest-devel-gpu,whichisthelatestTensorFlowGPUBinaryimageplussourcecode.
gcr.io/tensorflow/tensorflow:version-gpu,whichisthespecifiedversion(forexample,0.12.1)oftheTensorFlowGPUbinaryimage.
gcr.io/tensorflow/tensorflow:version-devel-gpu,whichisthespecifiedversion(forexample,0.12.1)oftheTensorFlowGPUbinaryimageplussourcecode.
Werecommendinstallingoneofthelatestversions.Forexample,thefollowingcommandlaunchesthelatestTensorFlowGPUbinaryimageinaDockercontainerfromwhichyoucanrunTensorFlowprogramsinashell:$nvidia-dockerrun-itgcr.io/tensorflow/tensorflow:latest-gpubash
ThefollowingcommandalsolaunchesthelatestTensorFlowGPUbinaryimageinaDockercontainer.InthisDockercontainer,youcanrunTensorFlowprogramsinaJupyternotebook:$nvidia-dockerrun-it-p8888:8888gcr.io/tensorflow/tensorflow:latest-gpu
ThefollowingcommandinstallsanolderTensorFlowversion(0.12.1):$nvidia-dockerrun-it-p8888:8888gcr.io/tensorflow/tensorflow:0.12.1-gpu
DockerwilldownloadtheTensorFlowbinaryimagethefirsttimeyoulaunchit.FormoredetailsseetheTensorFlowdockerreadme. NextSteps
Youshouldnowvalidateyourinstallation.
使用:Dockerhttp://songhuiming.github.io/pages/2017/02/25/an-zhuang-dockerhe-tensorflow/ 4.镜像管理
4.0.下载镜像dockerpullimage-name
4.1.查看本地镜像dockerimages
4.2.查看运行的容器查看active镜像:dockerps
查看所有镜像:dockerps-a
查看最近的镜像:dockerps-l
4.3.删除镜像删除容器dockerrmiimage-name
dockerrm<containerid>
4.4.在repo里搜索镜像dockersearch[image-name]
4.5.停止镜像dockerstopcontainer-id
4.6.停止并删除所有容器dockerstop$(dockerps-a-q)
dockerrm$(dockerps-a-q)
5.4.退出exit
Torestarttheexitedcontainer:dockerstart-a-i`dockerps-q-l`dockerstartstartacontainer(requiresnameorID)
-aattachtocontainer
-iinteractivemode
dockerpsListcontainers
-qlistonlycontainerIDs
-llistonlylastcreatedcontainer
5.5.HowdoIinstallnewlibrariesinDocker?
Therrearetwowaystodothis:
Firstmethodd:ModifytheDockerfiledirectlytoinstallneworupdateyourexistinglibraries.Youwillneedtodoadockerbuildafteryoudothis.IfyoujustwanttoupdatetoanewerversionoftheDLframework(s),youcanpassthemasCLIparameterusingthe--build-argtag(seefordetails).Theframeworkversionsaredefinedatthetopofthe Dockerfile.Forexample,dockerbuild-tshmhub/dl-docker:cpu-fDockerfile.cpu--build-argTENSORFLOW_VERSION=1.2.0.
Secondmthodd:youcaninstallorupgradeinthecontainer.Afteritisdone,exitthecocntaineranddoacommitasintroductebelow.
5.5.向dockerimage提交containerchangedockercommit-m"installvimwgetonubuntu"-a"author:shm"7de2c97f7a85shm/ubuntu_custom
这里7de2c97f7a85是imageid.也就是在bash下面看到的root@后面的id:root@7de2c97f7a85.这时候比较前后的镜像,就会发现commit以后多了一个镜像shm@ubuntu:~$dockerimages
REPOSITORYTAGIMAGEIDCREATEDSIZE
tensorflow/tensorflowlatestea40dcc457242weeksago1.03GB
ubuntulatestf49eec89601e5weeksago129MB
shm@ubuntu:~$dockercommit-m"installvimwgetonubuntu"-a"author:shm"7de2c97f7a85shm/ubuntu_custom
sha256:5ed742f690e11c65db83936847c7c5659c5834f6b2c93b52d110455936e6a224
shm@ubuntu:~$dockerimages
REPOSITORYTAGIMAGEIDCREATEDSIZE
shm/ubuntu_customlatest5ed742f690e112secondsago647MB
tensorflow/tensorflowlatestea40dcc457242weeksago1.03GB
ubuntulatestf49eec89601e5weeksago129MB
5.6.向仓库提交镜像
首先登陆dockerlogin-udocker-username
然后push
5.6.1.listtheimageandgetthetagidshm@shm-xps9550:~/projects/dl_lessons/courses-master/deeplearning1/nbs$`dockerimages`
REPOSITORYTAGIMAGEIDCREATEDSIZE
shmhub/dl-dockercpu0f1e40d1bed812daysago9.13GB
ubuntu16.046a2f32de169d13daysago117MB
5.6.2.tagthegiagewiththeregistoryhostdockertag0f1e40d1bed8pinseng/dl-docker
5.6.3.pushtheimagetotherepodockerpushdocker-username/docker-image-name
dockerpushpinseng/dl-docker四、使用dockerexec进入Docker容器
除了上面几种做法之外,docker在1.3.X版本之后还提供了一个新的命令exec用于进入容器,这种方式相对更简单一些,下面我们来看一下该命令的使用:
[plain]viewplain copy
$sudodockerexec--help
接下来我们使用该命令进入一个已经在运行的容器
[plain]viewplain copy
$sudodockerps
$sudodockerexec-it775c7c9ee1e1/bin/bash
如何获取localhost的地址?
打开一个新的terminal,查看container的地址:sudodockerinspectclever_bohr|grepIPAddress
1
这里的clever_bohr为该正在运行的container的名字,例子如下
在浏览器中输入:172.17.0.6:8888http://blog.csdn.net/tina_ttl/article/details/51417358 http://[allipaddressesonyoursystem]:8888/==========================>http://172.17.0.2:8888/
=========================================================================================================================================================================================================2017/11/8更=====
dockerpulltensorflow/tensorflow:nightly-gpu-py3
======================================dockerrunbash版本========================================
===========================================================本地ipython3notebook=================================================
=======================================================makepassword==================================================
========================================================usedocker-tfjupyter.shcode========================================================
相关文章推荐
- 在Docker Ubuntu镜像中安装tensorflow-gpu
- Windows下通过Docker安装Tensorflow环境
- windows下docker安装tensorflow利用Jupyter编程
- windows docker安装 tensorflow
- Ubuntu下安装Docker,TensorFlow和Caffe
- Win10下安装Docker及tensorflow(cpu版)
- Tensorflow安装与helloWolrd——windows下docker安装tensorflow利用Jupyter编程
- 使用docker安装paddlepaddle 和 tensorflow
- 基于docker安装tensorflow的完整步骤
- mac 下使用Docker安装搭建tensorflow环境
- Centos6.5上通过Docker安装Tensorflow
- 在Windows上玩TensorFlow(使用Docker安装pull国内镜像)
- Ubuntu下快速安装Docker&&快速安装Tensorflow方法
- 基于docker 安装tensorflow过程总结
- windows下使用docker安装tensorflow
- Docker 安装 TensorFlow GPU 实战