使用Docker运行TensorFlow

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Cyril__Li/article/details/77534035

暑假实习的时候需要连接到公司的服务器上跑程序,但是又没权限安装需要的库,所以开始学习使用docker来运行,简直整个世界都变美好了,回学校后要试试在Pycharm上配置docker。

1. 安装docker, 显卡驱动, cuda, nvidia-docker

2. 首次运行tensorflow官方docker image

链接:https://hub.docker.com/r/tensorflow/tensorflow/
在终端运行:

sudo nvidia-docker run -v /home/chuanhao/:$(pwd) -it tensorflow/tensorflow:latest-gpu bash

上面的命令会下载tensorflow docker image,并运行一个container

  • -v:指定docker与宿主机共享的文件夹
  • -i:以交互模式运行容器,通常与 -t 同时使用
  • -t:为容器重新分配一个伪输入终端,通常与 -i 同时使用
  • bash:在容器内执行bash命令

3. 连接到正在后台运行的容器(前提是没有使用exit或docker stop关掉它)

首先在终端输入:

docker ps

显示正在运行中的docker container,在里面找到之前用的那个,比如我之前用的那个容器是:

30b8665e5bdb tensorflow/tensorflow:latest-gpu "bash" 2 weeks ago Up 2 weeks 6006/tcp, 8888/tcp heuristic_galileo

然后在终端运行:

sudo nvidia-docker exec -it 30b8665e5bdb bash

注:

  • 如果关闭了container,可以使用docker start命令启动关闭了的container,做过的变动不会丢失
  • 如果用docker rm命令删除了container,则在container里做过的变动也丢失了,但共享文件夹的数据还在

4. 把容器打包成为镜像,并push到dockerhub或者保存在本地

在容器中安装了需要用的一些库之后,可能想要把它保存下来方便其他人用或者部署到其他机器上,这时需要做的是把它保存为镜像。

4.1 Push到Dockerhub

  • 首先在终端登录自己的dockerhub账号:
chuanhao@CV_COMPUTE:~$ sudo docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: cyrilli
Password:
Login Succeeded
  • 找到要保存为镜像的容器的ID并保存为镜像:
sudo docker ps -a
sudo docker commit a67ccbc40fc7 cyrilli/deep_learning
  • 此时使用sudo docker images可以看到刚刚保存的镜像
  • Push到dockerhub
sudo docker push cyrilli/deep_learning

docker cloud提示:

$ docker tag local-image:tagname reponame:tagname
$ docker push reponame:tagname
Make sure to change tagname with your desired image repository tag.

4.2 把镜像保存到本地文件

sudo docker save -o ubuntu.tar cyrilli/deep_learning

此时在当前路径会出现ubuntu.tar文件。
要想从本地文件加载镜像,只需在终端输入:

sudo docker load -i ubuntu.tar

猜你喜欢

转载自blog.csdn.net/Cyril__Li/article/details/77534035