深度学习docker配置

docker安装

以下来自阿里云镜像站: Ubuntu 14.04/16.04(使用 apt-get 进行安装)

# step 1: 安装必要的一些系统工具
sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
# step 2: 安装GPG证书
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
# Step 3: 写入软件源信息
sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
# Step 4: 更新并安装Docker-CE
sudo apt-get -y update
sudo apt-get -y install docker-ce

# 安装指定版本的Docker-CE:
# Step 1: 查找Docker-CE的版本:
# apt-cache madison docker-ce
#   docker-ce | 17.03.1~ce-0~ubuntu-xenial | https://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages
#   docker-ce | 17.03.0~ce-0~ubuntu-xenial | https://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages
# Step 2: 安装指定版本的Docker-CE: (VERSION例如上面的17.03.1~ce-0~ubuntu-xenial)
# sudo apt-get -y install docker-ce=[VERSION]

添加用户组,不需要再输入sudo

参考资料:docer docs: linux-postinstall

sudo groupadd docker
# 新建docker用户组
sudo usermod -aG docker $USER
# 把上面的 $user 替换为你的用户名
newgrp docker
# 更新用户组
docker run hello-world
# 测试一下

Note:

  1. If testing on a virtual machine, it may be necessary to restart the virtual machine for changes to take effect.(如果是在虚拟机中,有必要重启虚拟机)

  2. On a desktop Linux environment such as X Windows, log out of your session completely and then log back in.(在桌面Linux系统中,完全登出会话并重新登录)

  3. 如果不想重启系统还可以试试这个: sudo systemctl restart docker,来自stackoverflow: How to fix docker: Got permission denied issue

  4. 终极解决方案:sudo reboot

搭建tensorflow-gpu docker环境

  1. 配置nvidia-docker

    # $distribution是操作系统版本,如 ubuntu16.04
    curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - \
    curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
    sudo apt-get update
    sudo docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi
    # 测试安装
    
    docker pull tensorflow/tensorflow:1.15.4-gpu-py3
    #拉取tensorflow1.15.4 gpu版
    
  2. 启动docker

    docker run -it -p 8022:22 --ipc host --name docker_example --gpus all tensorflow/tensorflow:1.15.4-gpu-py3 /bin/bash
    

    -i 表示 Allocate a pseudo-tty
    -t 表示 Keep STDIN open even if not attached
    -p 表示对端口号进行映射,即将 docker 容器的 22 号端口映射到宿主机的 8022 端口,这样设置的目的是方便后续使用 VSCode 连接容器,可以根据需要进行设置(如果要连接多个container,可以把8022改成别的端口)
    -ipc host 的目的是为了增加主机与容器共享内存用的,如果这个参数报错,还可以采用--shm-size参数
    --name docker_example 是将容器命名为 docker_example,docker 有长id、短id、name三个标识,如果不指定名称则会随机名称
    --gpus all 是使用全部宿主机 GPU,这里的设置可以参考 nvidia-docker 的 Usage 具体设置使用哪个卡(深度学习要注意这里)

    1. -v /path:/path/in/container 这是将宿主机的/path目录与容器的/path/in/container目录挂载
    2. -v path:/path/in/container 这段语句的意思是在容器里挂载名为path的卷,它的存放位置是/path/in/container

    tensorflow/tensorflow:1.15.4-gpu-py3 是指定使用的镜像版本,这里的版本可以在 docker-hub 查到

    Note:这里要指定--gpus all否则无法调用GPU
    参考资料:知乎: Docker+VSCode配置属于自己的炼丹炉

  3. 在docker中安装ssh并在外部使用ssh登录

    mkdir /var/run/sshd
    echo 'root:passwd' | chpasswd
    # 这里使用你自己想设置的用户名和密码`(这里是passwd)`,但是一定要记住!
    sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
    sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd
    echo "export VISIBLE=now" >> /etc/profile
    service ssh restart
    

    在宿主机上测试

    sudo docker port [your_container_name] 22
    # 如果前面的配置生效了,你会看到如下输出
    # 0.0.0.0:8022
    

    在本地上测试
    ssh root@[your_host_ip] -p 8022
    如果成功登录的话说明docker已经设置好了

  4. 由container导出image

    docker commit -m="has update" -a="runoob" e218edb10161 runoob/ubuntu:v2
    

    -m: 提交的描述信息

    -a: 指定镜像作者

    e218edb10161:容器 ID(就是进入bash之后的root@a692e18a2e56中的a692e18a2e56)

    runoob/ubuntu:v2: 指定要创建的目标镜像名

Ubuntu,pip,anaconda换源

  1. Ubuntu
    Aliyun开源镜像站: Ubuntu镜像
    编辑/etc/apt/sources.list

    deb http://mirrors.aliyun.com/ubuntu/ xenial main
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial main
    
    deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main
    
    deb http://mirrors.aliyun.com/ubuntu/ xenial universe
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial universe
    deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
    
    deb http://mirrors.aliyun.com/ubuntu/ xenial-security main
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main
    deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security universe
    
  2. pip

    #创建目录
    mkdir -p ~/.pip
    #修改配置文件
    vim  ~/.pip/pip.conf #windows下是pip.ini
    #写入以下内容并保存
    [global]
    index-url = https://mirrors.aliyun.com/pypi/simple/
    
  3. anaconda

    channels:
    - defaults
    show_channel_urls: true
    channel_alias: https://mirrors.bfsu.edu.cn/anaconda
    default_channels:
    - https://mirrors.bfsu.edu.cn/anaconda/pkgs/main
    - https://mirrors.bfsu.edu.cn/anaconda/pkgs/free
    - https://mirrors.bfsu.edu.cn/anaconda/pkgs/r
    - https://mirrors.bfsu.edu.cn/anaconda/pkgs/pro
    - https://mirrors.bfsu.edu.cn/anaconda/pkgs/msys2
    custom_channels:
    conda-forge: https://mirrors.bfsu.edu.cn/anaconda/cloud
    msys2: https://mirrors.bfsu.edu.cn/anaconda/cloud
    bioconda: https://mirrors.bfsu.edu.cn/anaconda/cloud
    menpo: https://mirrors.bfsu.edu.cn/anaconda/cloud
    pytorch: https://mirrors.bfsu.edu.cn/anaconda/cloud
    simpleitk: https://mirrors.bfsu.edu.cn/anaconda/cloud
    

    conda 导入导出环境

    conda env export > py36.yaml #导出当前环境至py36.yaml
    conda env create -f py36.yaml #从py36.yaml导入
    
posted @ 2020-11-20 21:28  绝望的我  阅读(226)  评论(0编辑  收藏  举报