Docker容器的创建及相关软件的安装

在cuda版本为10.0, 系统为Ubuntu16.04的操作系统上部署深度学习环境。

容器创建

首先在docker hub上寻找一个合适的gpu版本的tensorflow镜像,比如tensorflow/tensorflow,因为这个是与cuda10.0匹配的。

使用下面的命令拉取镜像:

docker pull tensorflow/tensorflow:1.13.0rc1-gpu

拉取好后使用docker images命令查看该镜像的id,假设为5c495711b379,则使用下面的命令创建一个容器。

docker run --runtime=nvidia -it -v /home/biod/:/notebooks --env LANG=C.UTF-8 -e PASSWORD="yibaojiejie" -p 1899:8888 --shm-size=8G --name yibaojiejie -d --restart=always 5c495711b379

如果端口号没有被占用,且没有创建同名容器,则可以使用docker ps查看刚刚创建的容器id,假设为841d44dd4b3c,使用

docker attach 841d44dd4b3c

进入该容器。对于比较大的容器,这一步可能会卡住,此时直接Ctrl + C即可,就会发现已经进入了。

tensorflow及相关环境配置

进入容器后默认的python版本是2.7的,方便起见,使用anaconda3来安装python3。

wget https://repo.anaconda.com/archive/Anaconda3-2020.07-Linux-x86_64.sh

来下载anaconda。(后面的链接地址在anaconda的网站上找)

下载完成后打开~/.bashrc,在末尾添加

export PATH="/root/anaconda3/bin:$PATH"

然后source ~/.bashrc。此时使用which python查看python路径,就会发现是anaconda中的python。

注意:新安装的容器中可能没有wget或者vim等,使用apt-get install XX安装即可,如果定位不到,使用apt-get update再安装。

现在的anaconda默认的python是3.8版本的,有些低版本的包不支持了,所以我们使用

conda create --name py36 python=3.6

来创建一个3.6的环境。

创建完成后使用

conda activate py36

来进入该环境。第一次使用时需要init当前的shell,即

conda init shellname

常见的shellbash等。为了方便后面的使用,我们可以安装一个fish。安装的命令如下:

apt-add-repository ppa:fish-shell/release-2
apt-get update
apt-get install fish

安装完成后,只需在命令行输入fish即可使用。此时上面的init就变成了

conda init fish

为了使该过程生效,我们需要使用exit退出当前的容器(可以多次使用到退出容器为止),再重新attach

重新进入我们的py36环境。此后,所有的操作均应在此环境下进行。

首先安装pytorch:

pip install torch==1.4.0+cu100 torchvision==0.5.0+cu100 -f https://download.pytorch.org/whl/torch_stable.html

然后安装tensorflow:

pip install tensorflow-gpu==1.15.2

最后安装keras。安装时如果使用

pip install keras

则会显示需要2.2以上的tensorflow。所以用

pip install keras==2.3.0

来安装。

配置jupyter notebook

使用

pip install jupyter

来安装jupyter。然后使用

jupyter notebook --generate-config

来生存配置文件。打开文件~/.jupyter/jupyter_notebook_config.py,在末尾加上

import os
from IPython.lib import passwd

c = c  # pylint:disable=undefined-variable
c.NotebookApp.ip = '0.0.0.0'  # https://github.com/jupyter/notebook/issues/3946
c.NotebookApp.port = int(os.getenv('PORT', 8888))
c.NotebookApp.open_browser = False
c.NotebookApp.notebook_dir = '/notebooks/'

# sets a password if PASSWORD is set in the environment
if 'PASSWORD' in os.environ:
    password = os.environ['PASSWORD']
    if password:
        c.NotebookApp.password = passwd(password)
    else:
        c.NotebookApp.password = ''
        c.NotebookApp.token = ''
    del os.environ['PASSWORD']

此时运行

jupyter notebook --allow-root

就可以在XXX.XX.XXX.XXX:1899打开notebook了。此处的1899是上面启动容器时设置的端口号 ,前面的是服务器在内网的网址。

至此,我们的容器和深度学习环境就基本安装完毕了。

openslide的安装

这一部分是关于openslide软件安装的,如果不需要处理相应格式的病理图像可略过。

使用apt-get install openslide-tools安装时,安装的是3.4.0版本的,这一版本存在极大的缺陷,使用downsamples会产生很多问题,所以需要安装3.4.1版本的。

首先请务必使用

apt-get purge --auto-remove openslide-tools
apt-get purge --auto-remove python-openslide

将3.4.0的版本彻底删除干净。

然后在这里下载3.4.1版本的tar.gz包。

使用

tar -xzvf file.tar.gz

进行解压。

然后使用下面的命令安装相应的依赖(如果libxgdk-pixbuf2.0-dev找不到,略过即可)。

apt-get update
apt-get install libtiff-dev
apt-get install libglib2.0-dev
apt-get install libcairo2-dev
apt-get install libxml2-dev
apt-get install libxgdk-pixbuf2.0-dev
apt-get install libjpeg-dev
apt-get install libpng-dev

进入解压包,用

./configure

如果发现还有比如sqlite3没有安装,则使用apt-get install sqlite3安装即可。安装后可能发现还是找不到,这时想办法安装

apt-get install sqlite3-dev

(有可能直接输入上面的命令就可以了)。

在这些包中,OpenJpeg的安装比较复杂,因为不能直接使用apt-get install找到。在其github仓库上找到code下载链接

git clone https://github.com/uclouvain/openjpeg.git

(如果没有git,同样适用apt-get安装)。

进入解压后的openjpeg-master目录,执行下面的命令:

mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make install
make clean

可能没有cmake指令,还是使用apt-get安装。

上述过程中,任何时候./configure发现gdk-pixbuf-2.0不存在,均可使用

apt-get install libgdk-pixbuf2.0-dev

安装,如果不成功则暂时略过。

最后,使用

./configure

成功。

进入/root/ananconda3/bin(该路径根据安装的python所在路径而定),执行下面的命令

cp /usr/local/lib/libopenslide.so.0 ./
cp /usr/local/lib/libopenslide.so ./

输入

make
make install

即可进行安装。

此时,可能使用

openslide-show-properties --version 

会出现问题。留意上面./configure成功时出现过

If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the `-LLIBDIR' flag during linking and do at least one of the following:

  - add LIBDIR to the `LD_LIBRARY_PATH' environment variable
     during execution
   - add LIBDIR to the `LD_RUN_PATH' environment variable
     during linking
   - use the `-Wl,-rpath -Wl,LIBDIR' linker flag
   - have your system administrator add LIBDIR to `/etc/ld.so.conf'

的信息。执行下面两条命令

export LD_RUN_PATH=/usr/local/lib
export LD_LIBRARY_PATH=/usr/local/lib/

查看openslide版本为3.4.1,则安装完成。

最后,

pip install openslide-python

安装python接口即可。

这部分内容来源于pzSuen,天牙的窝以及像风一样Pro
的博客。

打包容器

由于上面的安装过程比较复杂,所以可以将当前的容器打包成一个镜像,以后就可以根据该镜像创建容器。假设现在容器的id为5c495711b379,想将其打包为一个名叫xuanji的镜像,使用下面的命令

docker commit -a "xingming" -m "zhushi" 5c495711b379 xuanji

使用

docker images

就可以看到一个名为xuanji的镜像了。

你可能感兴趣的:(Docker容器的创建及相关软件的安装)