版权声明:本文为博主原创文章,未经博主允许不得转载。 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