前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Docker - 基于NVIDIA-Docker的Caffe-GPU环境搭建

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

作者头像
AIHGF
发布2019-02-18 10:51:48
2.2K0
发布2019-02-18 10:51:48
举报
文章被收录于专栏:AIUAIAIUAI

保持更新版本迁移至 - 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]

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017年05月20日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 Docker与NVIDIA-Docker的安装与配置
    • 1.1 Docker安装
      • 1.1.1 Ubuntu14.04 软件源安装
      • 1.1.2 Docker官网安装
    • 1.2 阿里云加速器设置
      • 1.3 NVIDIA-Docker安装
      • 2. Caffe镜像使用
      • 3. Docker 错误解决
        • 3.1 python 提示错误UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position
        相关产品与服务
        容器镜像服务
        容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档