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版本的。

<font color = "red">首先请务必使用

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

将3.4.0的版本彻底删除干净。</font>

然后在这里下载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接口即可。

<font color = "purple">这部分内容来源于pzSuen天牙的窝以及像风一样Pro
的博客。</font>

打包容器

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

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

使用

docker images

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,686评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,668评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,160评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,736评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,847评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,043评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,129评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,872评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,318评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,645评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,777评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,861评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,589评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,687评论 2 351