写这篇博客,主要是每次都要想把书签放到哪里去了,所以将笔记记在这里吧。
0.环境
ubuntu16.04
1.tensorflow、keras、pytorch可以使用virtualenv
用的比较好的一篇博客中的方法:
https://www.jianshu.com/p/6bf33e479753
新建虚拟环境、激活虚拟环境、关闭虚拟环境、删除虚拟环境。
windows下:
打开cmd
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple virtualenv
virtualenv env
cd env/Scripts/
activate
关闭的话:
deactivate
ubuntu下:
打开terminal
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple virtualenv
virtualenv env
cd env
source ./bin/activate
关闭的话:
deactivate
2.caffe使用docker
此处将要学习。
3.tensorflow使用docker
3.1 首次创建虚拟环境和容器
当我们需要编译tensorflow的时候,可以自己使用docker创建tensorflow的虚拟环境。由于服务器上已经安装了docker,所以直接使用下面命令将镜像拉到服务器上:
docker pull tensorflow/tensorflow:1.12.0-gpu-py3
完成上面步骤,其实就已经创建了tensorflow的虚拟环境了。使用docker images查看镜像:
docker images
新建一个sh文件,然后运行就好了。(sh ./your_sh.sh)
#!/bin/bash
nvidia-docker run -m 8GB -it --net=host \
-v 实际物理被映射的目录:虚拟目录 \
--name (我的容器名称,可以随便定义,但是不能重复) tensorflow/tensorflow:1.12.0-gpu-py3 /bin/bash
例子:
#!/bin/bash
nvidia-docker run -m 8GB -it --net=host \
-v /home/tensorflow/:/opt/tensorflow/ \
--name tf_test tensorflow/tensorflow:1.12.0-gpu-py3 /bin/bash
nvidia-docker:表示是使用的GPU;
-v 前:后:后者的虚拟地址,对应的就是前面的实际物理被映射的目录;也就是说当我们使用上面语句创建我们句子的容器以后,切换到虚拟目录下,里面的文件与文件夹都是实际物理被映射的目录下的。
3.2 退出当前容器
单个终端时:
exit
多个终端时:
docker container stop
3.2 再次进入指定容器
以上面我写过的例子为例的话,就是下面这样了。
单个终端时:
docker start 我的容器
docker attach 我的容器
使用上述的即使打开多个终端进入同一个容器,但是显示的仍然会是相同的内容
例子:
docker start tf_test
docker attach tf_test
运行完上面两句,才算真正的进入容器了,就会进入到我的容器的(root)用户下, docker创建的虚拟环境有自己的root用户,这样就不用担心会破坏服务器里的环境啦~
3.3 单个容器打开多个终端
多个终端时:
首先使用docker ps显示运行的容器ID
docker exec -it contrainer_ID /bin/bash
运行上述命令后,显示如下,不会跟这个容器下打开的终端同步显示了,意味着,我可以在单个容器下,做其他的事情了。 实现在单个容器打开多个不一样的终端。
参考
3.docker-从入门到实践