刚开始接触Docker,这篇博客高手慎入,本机环境是Ubuntu16.04,创建容器也是Ubuntu16.04
1.首先创建Ubuntu 16.04容器 : docker run -i -t ubuntu:16.04 /bin/bash 这句命令其实是直接进入Ubuntu的命令行,如果不存在Ubuntu的话Docker会自动创建容器,并已进入容器,显示如下,root@后面那一串数字字母是你当前打开的容器id(这里是我的,请退出该容器前务必记住这个id)
2.新创建的容器存在一个问题,就是安装软件无法自动下载依赖,也就是说随便安装一个软件都要把所有依赖都一起找到并且下载下来逐个安装,这样也太麻烦了。搞了好久想到一个方法,找到本机下载源对应的文件/etc/apt/sources.list,复制一份在新的路径下并且修改为国内镜像源,我改的是清华源:
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
3.新开一个本机命令行窗口将刚才写了清华源的sources.list文件复制到容器中
4.此时容器中的原始sources.list文件已经被新文件替代,接下来就是正常的Ubuntu操作,先更新apt-get update
然后就可以安装自己想安装的软件了(一开始我安装wget这样的软件都无法安装,现在直接apt-get install wget)
5.此时的容器已经可以随意安装软件了,TensorFlow环境我准备用anaconda,后续再安装吧,cuda、cudnn这些东西的安装需要先下载想用版本的deb安装包,以同样的方法放到容器中,用dpkg -i XXXX实现安装
6.补充一点:当退出当前容器后,不要尝试通过 docker run -i -t ubuntu:16.04 /bin/bash再次进入同一容器,你会发现id肯定是变了的,每次都不一样,需要使用docker start 522b6d5e500b(之前记下的id),然后docker attach 522b6d5e500b进入之前的环境