专栏首页AIUAIDocker - 基于NVIDIA-Docker的Caffe-GPU环境搭建

Docker - 基于NVIDIA-Docker的Caffe-GPU环境搭建

保持更新版本迁移至 - Docker - 基于NVIDIA-Docker的Caffe-GPU环境搭建

主要包括两部分: 1. Docker与NVIDIA-Docker的安装与配置 2. Caffe镜像使用

1 Docker与NVIDIA-Docker的安装与配置

1.1 Docker安装

Docker安装过程需要使用root权限, 主要有两种安装方式:

1.1.1 Ubuntu14.04 软件源安装

使用Ubuntu14.04系统默认自带的docker.io安装包安装Docker,版本相对较旧. 命令行操作过程如下:

  1. sudo apt-get update
  2. sudo apt-get -y install docker.io
  3. sudo service docker.io status (检查Docker服务的状态)
  4. sudo docker run hello-world (测试Docker安装是否成功)

1.1.2 Docker官网安装

采用官网安装方式可以获取最新版本Docker. 在安装Docker之前需要配置Docker官方仓库,然后从该仓库进行获取与安装. 首先,进行Docker仓库设置:

  1. sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
  2. curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  3. sudo apt-key fingerprint 0EBFCD88
  4. sudo add-apt-repository “deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable”

然后, 安装Docker:

  1. sudo apt-get update
  2. sudo apt-get install docker-ce
  3. sudo docker run hello world

1.2 阿里云加速器设置

由于官方Docker Hub网络速度较慢,这里使用阿里云提供的Docker Hub. 需要配置阿里云加速器,官方说明如下:

  1. 针对Docker客户端版本大于1.10的用户: 您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器:
    1. sudo mkdir -p /etc/docker
    2. sudo tee /etc/docker/daemon.json <<-‘EOF’ { “registry-mirrors”: [“https://fird1mfg.mirror.aliyuncs.com“] } EOF
    3. sudo systemctl daemon-reload
    4. sudo systemctl restart docker
  2. 针对Docker客户的版本小于等于1.10的用户: 或者想配置启动参数,可以使用下面的命令将配置添加到docker daemon的启动参数中. Ubuntu 12.04 14.04的用户:
    1. echo “DOCKER_OPTS=\”$DOCKER_OPTS –registry-mirror=https://fird1mfg.mirror.aliyuncs.com\”” | sudo tee -a /etc/default/docker
    2. sudo service docker restart

    Ubuntu 15.04 16.04的用户

    1. sudo mkdir -p /etc/systemd/system/docker.service.d
    2. sudo tee /etc/systemd/system/docker.service.d/mirror.conf <<-‘EOF’ [Service] ExecStart=/usr/bin/docker daemon -H fd:// –registry-mirror=https://fird1mfg.mirror.aliyuncs.com EOF
    3. sudo systemctl daemon-reload
    4. sudo systemctl restart docker

1.3 NVIDIA-Docker安装

  • Prerequisties GNU/Linux x86_64 with kernel version > 3.10 Docker >= 1.9 (official docker-engine, docker-ce or docker-ee only) NVIDIA GPU with Architecture > Fermi (2.1) NVIDIA drivers >= 340.29 with binary nvidia-modprobe (驱动版本与CUDA计算能力相关)
  • CUDA与NVIDIA driver安装 处理NVIDIA-Docker依赖项 NVIDIA drivers >= 340.29 with binary nvidia-modprobe 要求. 根据显卡,下载对应版本的CUDA并进行安装.
  • NVIDIA-Docker安装 #Install nvidia-docker and nvidia-docker-plugin
    1. wget -P /tmp https://github.com/NVIDIA/nvidia-docker/releases/download/v1.0.1/nvidia-docker_1.0.1-1_amd64.deb
    2. sudo dpkg -i /tmp/nvidia-docker*.deb && rm /tmp/nvidia-docker*.deb

    #Test nvidia-smi

    1. sudo nvidia-docker run –rm nvidia/cuda nvidia-smi

2. Caffe镜像使用

这里使用阿里云的镜像服务.,从Docker注册服务器的Docker仓库下载一个已有的Docker镜像.

# 登录阿里云 1. sudo nvidia-docker login registry.aliyuncs.com Username: ********** Password: ********** # 拉取Caffe镜像 2. sudo nvidia-docker pull registry.cn-hangzhou.aliyuncs.com/docker_learning_aliyun/caffe:v1 # 查看拉取的Caffe镜像信息 3. sudo nvidia-docker images 输出信息:

# 查看Caffe镜像的显卡信息 4. sudo nvidia-docker run -it registry.cn-hangzhou.aliyuncs.com/docker_learning_aliyun/caffe:v1 nvidia-smi 输出信息:

# 进入容器,操作类似于Ubuntu系统,默认进入容器内的 /workspace 目录 5. sudo nvidia-docker run -it registry.cn-hangzhou.aliyuncs.com/docker_learning_aliyun/caffe:v1 /bin/bash # 基于容器Caffe镜像运行python程序 6. sudo nvidia-docker run –volume=$(pwd):/workspace –volume=/path/to/data:/data –rm caffe-image:base python demo.py 实例说明: 1. nvidia-docker run:运行镜像 2. –volume=$(pwd):/workspace –volume=/path/to/data:/data: 将主机的路径挂载到容器中, “:”前后分别为为主机目录和容器路径 3. -rm: 运行镜像后删除 4. caffe-image:base: Caffe镜像. 5. python demo.py: python程序运行,类似于Ubuntu环境.

3. Docker 错误解决

3.1 python 提示错误UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position

错误:

# docker 中 python 代码的 print(“中文”) 出现错误,但宿主机不会出现该错误,如下: UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position 0-127: ordinal not in range(128)

错误原因:

因为locale 的设置导致 shell 的stdin/stdout/stderr 的默认编码为ascii,当用ascii编码去解释python3默认unicode编码的时候,则会有问题

解决方法:

# python3 的解决方式是 容器在初始化时候 需要设置shell的stdin/stdout/stderr 的默认编码方式为 utf-8,需要重启容器 # docker run 方式 docker run -e PYTHONIOENCODING=utf-8 m_container:latest my-python3 # docker-compose 方式 environment: - PYTHONIOENCODING=utf-8

[From docker python 提示错误UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position]

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Docker - Image镜像创建及容器操作

    主要包括两部分: 1. 镜像(IMAGE)创建 2. 数据卷(Data Volumes)挂载

    AIHGF
  • 时间序列数据的存储和计算-知乎系列介绍

    [2] - 时间序列数据的存储和计算 - 开源时序数据库解析(一) - 2018.01.07

    AIHGF
  • 论文阅读理解 - Look into Person: Self-supervised Structure-sensitive Learning

    几种不同的标注数据集. (1)ATR 数据集的图片是固定尺寸的(400*600),仅是室外站立的模特,电商图片类适应. (2) PASCAL-Person...

    AIHGF
  • %99的人都不知道的Docker技巧:优雅的终止容器

    如上的各种场景中,都要求打包在容器中的应用程序能够被优雅的终止(也即gracefully shutdown),这种gracefully shutdown的方式,...

    云爬虫技术研究笔记
  • Docker(一)——环境配置

    官方提供的安装教程地址:https://docs.docker.com/install/linux/docker-ce/centos/#os-requireme...

    羊羽shine
  • %99的人都不知道的Docker技巧:优雅的终止容器

    如上的各种场景中,都要求打包在容器中的应用程序能够被优雅的终止(也即gracefully shutdown),这种gracefully shutdown的方式,...

    心莱科技雪雁
  • 「走进k8s」Docker三剑客之Docker Machine(八)

    PS:云环境下批量部署 Docker环境,使用的比较多的是公有云和私有云上安装。命令比较简单。docker machine就是在远程机器上安装docker的,虽...

    IT故事会
  • CentOS 7 使用 docker 安装 typecho 博客系统

    我的博客 https://savokiss.com 用的是 typecho,一直使用的是 阿里云ECS 直接安装的 MySQL 和 PHP,由于买的时间比较早,...

    savokiss
  • Centos7修改Docker默认存储位置

    Centos7安装docker之后,默认的镜像及容器存储路径为/var/lib/docker,可以使用命令docker info查看。

    py3study
  • docker使用笔记

    1)mkdir /etc/systemd/system/docker.service.d

    用户1396155

扫码关注云+社区

领取腾讯云代金券