GVKun编程网logo

docker 学习 2 - 快速搭建 centos7-python3.6 环境(docker搭建python开发环境)

11

想了解docker学习2-快速搭建centos7-python3.6环境的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于docker搭建python开发环境的相关问题,此外,我们还将为您介绍

想了解docker 学习 2 - 快速搭建 centos7-python3.6 环境的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于docker搭建python开发环境的相关问题,此外,我们还将为您介绍关于CentOS 下使用 Docker 快速搭建 LNMP 环境、centos7 docker 安装 和在 docker 中搭建 lnmp 环境、centos7 docker安装 和在docker中搭建lnmp环境、CentOS7 Nvidia Docker环境搭建的新知识。

本文目录一览:

docker 学习 2 - 快速搭建 centos7-python3.6 环境(docker搭建python开发环境)

docker 学习 2 - 快速搭建 centos7-python3.6 环境(docker搭建python开发环境)

前言

当我们在一台电脑上搭建了 python3.6 的环境,下次换了个电脑,或者换成 linux 的系统了,又得重新搭建一次,设置环境变量、下载 pip 等操作。 好不容易安装好,一会 Scrips 目录找不到 pip.exe, 一会提示 pip 不是内部或外部命令,一会又提示 pip: command not found, 想死的心都有了。 搭建环境成为不少小伙伴学习的障碍,从今天开始学好 docker,环境问题从此和你说再见~~~

search 搜索镜像

docker search : 从 Docker Hub (https://hub.docker.com) 中搜索指定的镜像 比如我这里搜索一个基于 centos7 环境安装的 python3.6 版本

  • NAME 镜像仓库名称
  • DESCRIPTION 镜像描述信息
  • STARS 镜像收藏数
  • OFFICIAL 是否为 docker 官方发布的镜像
  • AUTOMATED 是否为自动化构建的镜像

关于自动化构建,可以查看官方文档:https://docs.docker.com/docker-hub/builds/#how-automated-builds-work

docker search python

[root@yoyo ~]# docker search python
NAME                             DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
python                           Python is an interpreted, interactive, objec…   4288                [OK]                
django                           Django is a free web application framework,    847                 [OK]                
pypy                             PyPy is a fast, compliant alternative implem…   193                 [OK]                
kaggle/python                    Docker image for Python scripts run on Kaggle   123                                     [OK]
arm32v7/python                   Python is an interpreted, interactive, objec…   37                                      
centos/python-35-centos7         Platform for building and running Python 3.5   36                                      
joyzoursky/python-chromedriver   Python with Chromedriver, for running automa…   33                                      [OK]
circleci/python                  Python is an interpreted, interactive, objec…   29                                      
nikolaik/python-nodejs           Python with Node.js                             18                                      [OK]
arm64v8/python                   Python is an interpreted, interactive, objec…   17                                      
centos/python-36-centos7         Platform for building and running Python 3.6   17                                      
centos/python-27-centos7         Platform for building and running Python 2.7   15                                      
iron/python                      Tiny Python Microcontainer                      9                                       
publicisworldwide/python-conda   Basic Python environments with Conda.           6                                       [OK]
dockershelf/python               Repository for docker images of Python. Test…   4                                       [OK]
i386/python                      Python is an interpreted, interactive, objec…   3                                       
bitnami/python                   Bitnami Python Docker Image                     3                                       [OK]
komand/python-plugin             DEPRECATED: Komand Python SDK                   2                                       [OK]
centos/python-34-centos7         Platform for building and running Python 3.4   2                                       
muccg/python-base                Base images that use python                     1                                       [OK]
amd64/python                     Python is an interpreted, interactive, objec…   1                                       
ccitest/python                   CircleCI test images for Python                 0                                       [OK]
saagie/python                    Repo for python jobs                            0                                       
qbtrade/python                   python 3.6.5 with requirements last update s…   0                                       
openshift/python-33-centos7      DEPRECATED: A Centos7 based Python v3.3 imag…   0                                       
[root@yoyo ~]# 

pull 下载镜像

上面找的想要下载的镜像 centos/python-36-centos7, 接下来下载到自己本地

docker pull centos/python-36-centos7

[root@yoyo ~]# docker pull centos/python-36-centos7
Using default tag: latest
latest: Pulling from centos/python-36-centos7
8ba884070f61: Pull complete 
c3dca185eb14: Pull complete 
ee720ba20823: Pull complete 
497ef6ea0fac: Pull complete 
ebf1fb961f61: Pull complete 
b8249f70ce00: Pull complete 
ebd817e2efe7: Pull complete 
d3d10dd0937c: Pull complete 
a8ad47ec8182: Pull complete 
Digest: sha256:d10c46b6db436357965a96716e9f5d230d9b1a58c6db1f0c4f43c1fb1994cd79
Status: Downloaded newer image for centos/python-36-centos7:latest
[root@yoyo ~]# 

images 本地镜像查看

使用 docker images 查看本地已经下载好的镜像

docker images

[root@yoyo ~]# docker images
REPOSITORY                 TAG                 IMAGE ID            CREATED             SIZE
centos/python-36-centos7   latest              b8d15efaa8ec        2 months ago        651MB
ubuntu                            15.10               9b9cb95443b5        2 years ago         137MB
training/webapp               latest              6fae60ef3446        4 years ago         349MB

运行交互式的容器

Docker 会在隔离的容器中运行进程。当运行 docker run 命令时,Docker 会启动一个进程,并为这个进程分配其独占的文件系统、网络资源和以此进程为根进程的进程组。 在容器启动时,镜像可能已经定义了要运行的二进制文件、暴露的网络端口等,但是用户可以通过 docker run 命令重新定义 最基本的 docker run 命令的格式如下:

$ sudo docker run [OPTIONS] IMAGE[:TAG] [COMMAND] [ARG...]

比如我这里要启动 centos7,进入交互模式,通过 docker 的两个参数 -i -t,让 docker 运行的容器实现 "对话" 的能力

  • t: 在新容器内指定一个伪终端或终端。
  • i: 允许你对容器内的标准输入 (STDIN) 进行交互

docker run -i -t centos/python-36-centos7 /bin/bash

如下进入 centos 终端后,进 python 交互环境打印 "hello world! I’m comming!!!", 最后用 exit 退出

[root@yoyo ~]# docker run -i -t centos/python-36-centos7 /bin/bash
(app-root) python
Python 3.6.3 (default, Mar 20 2018, 13:50:41) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> print("hello world! I’m comming!!!")
hello world! I’m comming!!!
>>> exit()
(app-root) exit

后台模式启动

run 加上 - i -t 是进交互模式,如果不想进交互模式直接执行脚本,可以直接使用 run, 比如 echo "hello world", 屏幕会输出 "hello world"

docker run centos/python-36-centos7 /bin/echo "hello world"

如果不想在前台执行,一般我们运行环境会选择挂后台,加个 - d 参数即可

docker run -d centos/python-36-centos7 /bin/echo "hello world"

[root@yoyo ~]# docker run centos/python-36-centos7 /bin/echo "hello world"
hello world
[root@yoyo ~]# docker run -d centos/python-36-centos7 /bin/echo "hello world"
1e5c22451bf2215f6c098e066b74363f1db9cde97e9ecea02947ccbbf2fa7e8f
[root@yoyo ~]# 

使用 - d 后台执行后,会发现下面多了一长串,这个就是容器的唯一 id,可以通过这个 id 找到容器

ps 查看容器

先 run 下 training/webapp

docker run -d -p 5000:5000 training/webapp python app.py

使用 docker ps 查看正在运行的容器

docker ps

[root@yoyo ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                  
c9e8a325b145        training/webapp     "python app.py"     16 hours ago        Up 16 hours         0.0.0.0:32768->5000/tcp
[root@yoyo ~]# 

上面的 echo "hello world" 只是一个很简单的输出指令,执行完就关闭了,所以 ps 查找正在运行的查不到,可以加个 - a 参数,显示所有的容器,包括未运行的

ps 查找参数相关语法

  • -a : 显示所有的容器,包括未运行的。
  • -f : 根据条件过滤显示的内容。
  • --format : 指定返回值的模板文件。
  • -l : 显示最近创建的容器。
  • -n : 列出最近创建的 n 个容器。
  • --no-trunc : 不截断输出。
  • -q : 静默模式,只显示容器编号。
  • -s : 显示总的文件大小。

docker ps -a

[root@yoyo ~]# docker ps -a
CONTAINER ID        IMAGE                      COMMAND                  CREATED             STATUS                      PORTS                     NAMES
1e5c22451bf2        centos/python-36-centos7   "container-entrypoin…"   10 minutes ago      Exited (0) 10 minutes ago                             hopeful_poincare
1d14dd77352f        centos/python-36-centos7   "container-entrypoin…"   12 minutes ago      Exited (0) 12 minutes ago                             nervous_visvesvaraya
fefdcbb9c662        centos/python-36-centos7   "container-entrypoin…"   13 minutes ago      Exited (0) 13 minutes ago                             quirky_cray
9df329b5effd        centos/python-36-centos7   "container-entrypoin…"   13 minutes ago      Exited (0) 13 minutes ago                             nifty_roentgen
c9e8a325b145        training/webapp            "python app.py"          16 hours ago        Up 16 hours                 0.0.0.0:32768->5000/tcp   kind_kirch
[root@yoyo ~]# 

这样就能找到上面的容器 id 1e5c22451bf2 , 不过没那么长

logs 查看日志

可以通过容器 id 去查运行的日志

docker logs [容器 id]

[root@yoyo ~]# docker logs 1e5c22451bf2 
hello world
[root@yoyo ~]# 

也可以通过容器的名称去查看,注意这里是容器的名称,不是镜像名称。容器名称是系统自动分配的,如上面的最后一项 NAMES 值 hopeful_poincare

[root@yoyo ~]# docker logs hopeful_poincare
hello world

-f: 让 docker logs 像使用 tail -f 一样来输出容器内部的标准输出。

docker logs -f 1e5c22451bf2

停止容器

可以用 ps 查看正在运行的容器

docker ps

[root@yoyo ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                     NAMES
c9e8a325b145        training/webapp     "python app.py"     17 hours ago        Up 17 hours         0.0.0.0:32768->5000/tcp   kind_kirch

停止容器的话,可以用 stop 容器的 id 或者容器 NAME 名称

docker stop c9e8a325b145

或者提供容器名称 kind_kirch 来停止

docker stop kind_kirch

启动容器

提供 start 启动容器

[root@yoyo ~]# docker start c9e8a325b145
c9e8a325b145
[root@yoyo ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                     NAMES
c9e8a325b145        training/webapp     "python app.py"     17 hours ago        Up 5 seconds        0.0.0.0:32769->5000/tcp   kind_kirch
[root@yoyo ~]# 

正在运行的容器,可以使用 docker restart 命令来重启

[root@yoyo ~]# docker restart c9e8a325b145
c9e8a325b145
[root@yoyo ~]# 

删除容器

使用 docker rm 命令来删除不需要的容器

[root@yoyo ~]# docker ps -a
CONTAINER ID        IMAGE                      COMMAND                  CREATED             STATUS                      PORTS                     NAMES
1e5c22451bf2        centos/python-36-centos7   "container-entrypoin…"   24 minutes ago      Exited (0) 24 minutes ago                             hopeful_poincare
1d14dd77352f        centos/python-36-centos7   "container-entrypoin…"   27 minutes ago      Exited (0) 27 minutes ago                             nervous_visvesvaraya
fefdcbb9c662        centos/python-36-centos7   "container-entrypoin…"   27 minutes ago      Exited (0) 27 minutes ago                             quirky_cray
9df329b5effd        centos/python-36-centos7   "container-entrypoin…"   27 minutes ago      Exited (0) 27 minutes ago                             nifty_roentgen
c9e8a325b145        training/webapp            "python app.py"          17 hours ago        Up 41 seconds               0.0.0.0:32770->5000/tcp   kind_kirch
[root@yoyo ~]# docker rm 1e5c22451bf2
1e5c22451bf2
[root@yoyo ~]# docker rm 1d14dd77352f
1d14dd77352f
[root@yoyo ~]# docker rm kind_kirch
Error response from daemon: You cannot remove a running container c9e8a325b14534f0b27cfd34e3ceefd16f6a6c9f136c0305d4e60de61f2badc3. Stop the container before attempting removal or force remove
[root@yoyo ~]# 

但是 rm 正在运行的容器时候,它会报错,需先 stop,才能 rm

[root@yoyo ~]# docker stop kind_kirch
kind_kirch
[root@yoyo ~]# docker rm  kind_kirch
kind_kirch
[root@yoyo ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[root@yoyo ~]# 

python 接口 QQ 群:717225969

CentOS 下使用 Docker 快速搭建 LNMP 环境

CentOS 下使用 Docker 快速搭建 LNMP 环境

一、安装 Docker

更新 yum 包

yum -y update

 

卸载旧版本(如果之前安装过的话)

yum remove docker  docker-common docker-selinux docker-engine

 

安装需要的软件包,yum-util 提供 yum-config-manager 功能,另外两个是 devicemapper 驱动依赖

yum install -y yum-utils device-mapper-persistent-data lvm2

 

设置 yum 源

yum-config-manager --add-repo http://download.docker.com/linux/centos/docker-ce.repo

 

以下命令可以查看可用版本

yum list docker-ce --showduplicates | sort -r

 

选择一个版本并安装

yum -y install docker-ce-18.03.1.ce

 

启动 Docker 并设置开机启动

systemctl start docker
systemctl enable docker

 

查看 Docker 版本

docker version

 

二、拉取 LNMP 包

从 Docker 库中获取 LNMP 镜像,可以登录Docker Store去搜所自己想要下载的镜像

从 Docker Store 下载 LMP 镜像

docker pull winstonpro/lnmp

 

查看已经下载的 Docker 镜像

docker images

 

三、运行

启动 LMP 镜像

docker run -d -p 32801:80 -p 32802:443 -p 32803:3306 -p 32804:22  --name lnmp  winstonpro/lnmp

 

-d 指的是在后台运行 -p指定暴露的端口 第一个端口是对外暴露的接口 相对应的是内部的端口。

启动成功后可以使用docker ps查看正在运行的docker镜像

测试是否成功!访问你 centos 的ip地址+32801 例如我的centos ip是10.211.55.4:32801

 

 

centos7 docker 安装 和在 docker 中搭建 lnmp 环境

centos7 docker 安装 和在 docker 中搭建 lnmp 环境

https://www.cnblogs.com/yufeng218/p/8370670.html

https://www.cnblogs.com/qgc1995/archive/2018/08/29/9553572.html

lnmp 环境搭建

注:在此文件中配置所需要的容器  docker-compose.yml  ,并执行:docker-compose up -d

文件中内容:

 1 version: "2"
 2 services:
 3   web:    #容器名称
 4     image: hub.haha.com/library/nginx:latest #镜像
 5     restart: always    
 6     volumes:        #映射  外部目录对应docker的目录
 7       - ./www:/var/www/html
 8       - ./nginx/conf:/etc/nginx
 9       - ./nginx/log:/var/log/nginx
10     ports:    
11       - 8888:80        #映射对应的端口号
12     networks:        #整体应用的网络名称
13       - my-network    
14     depends_on:    #依赖的对象
15       - php
16   php:
17     image: hub.haha.com/library/phpfpm:latest
18     restart: always
19     volumes:
20       - ./www:/var/www/html
21       - ./php/conf.d:/usr/local/etc/php/conf.d
22     networks:
23       - my-network
24     depends_on:
25       - mysql
26   mysql:
27     image: hub.haha.com/library/mysql:latest
28     ports:
29       - 7000:3306
30     volumes:
31       - ./mysql/data:/var/lib/mysql
32       - ./mysql/log:/var/log/mysql
33       - ./mysql/conf:/etc/mysql/mysql.conf.d
34     restart: always
35     environment:    #初始化新建数据库
36       - MYSQL_ROOT_PASSWORD=root
37       - MYSQL_DATABASE=wechat
38     networks:
39       - my-network
40 networks:    #网络名称
41   my-network:
42     driver: bridge         #  指定的运行驱动

 

version: "2"
services:
  web:
    image: hub.haha.com/library/nginx:latest
    restart: always
    volumes:
      - ./www:/var/www/html
      - ./nginx/conf:/etc/nginx
      - ./nginx/log:/var/log/nginx
      - ./nginx/ssl:/etc/nginx/ssl
    ports:
      - 443:80
    networks:
      - ky-network
    depends_on:
      - php
  php:
    image: hub.haha.com/library/phpfpm:latest
    restart: always
    volumes:
      - ./www:/var/www/html
    networks:
      - ky-network
  redis:
    image: hub.haha.com/library/redis:3.2.10
    volumes:
      - ./redis:/data
    ports:
      - 192.168.0.0:6379:6379
    networks:
      - ky-network
    restart: always
  es:
    image: hub.haha.com/library/elasticsearch:6.4.3
    restart: always
    ports:
      - 9200:9200
      - 9300:9300
    environment:
      - "discovery.type=single-node"
    networks:
      - ky-network
  esadmin:
    image: mobz/elasticsearch-head:5
    restart: always
    ports:
      - 9100:9100
    networks:
      - ky-network
networks:
  ky-network:
    driver: bridge
[root@wayhood ky-docker]# cat docker-compose.yml
version: "2"
services:
  web:
    image: hub.haha.com/library/nginx:latest
    restart: always
    volumes:
      - ./www:/var/www/html
      - ./nginx/conf:/etc/nginx
      - ./nginx/log:/var/log/nginx
      - ./nginx/ssl:/etc/nginx/ssl
    ports:
      - 443:80
    networks:
      - ky-network
    depends_on:
      - php
  php:
    image: hub.haha.com/library/phpfpm:latest
    restart: always
    volumes:
      - ./www:/var/www/html
    networks:
      - ky-network
  redis:
    image: hub.haha.com/library/redis:3.2.10
    volumes:
      - ./redis:/data
    ports:
      - 192.168.0.0:6379:6379
    networks:
      - ky-network
    restart: always
  es:
    image: hub.haha.com/library/elasticsearch:6.4.3
    restart: always
    ports:
      - 9200:9200
      - 9300:9300
    environment:
      - "discovery.type=single-node"
    networks:
      - ky-network
  esadmin:
    image: mobz/elasticsearch-head:5
    restart: always
    ports:
      - 9100:9100
    networks:
      - ky-network
networks:
  ky-network:
    driver: bridge

 

docker exec -it wechat_web_1 bash 或 docker-compose exec php bash  进入 docker 中查看原始 php 目录

 

 

 

1、安装 Docker,命令:yum install docker-ce   默认安装最新版本

yum install docker-ce

安装 Docker,命令:yum install docker-ce - 版本号,我选的是 17.12.1.ce,如下

复制代码
[root@localhost ~]# yum install docker-ce-17.12.1.ce

2、安装需要的软件包, yum-util 提供 yum-config-manager 功能,另外两个是 devicemapper 驱动依赖的

$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2

3、启动并加入开机启动

$ sudo systemctl start docker
$ sudo systemctl enable docker

4、验证安装是否成功 (有 client 和 service 两部分表示 docker 安装启动都成功了)

$ docker version

centos7 docker安装 和在docker中搭建lnmp环境

centos7 docker安装 和在docker中搭建lnmp环境

https://www.cnblogs.com/yufeng218/p/8370670.html

https://www.cnblogs.com/qgc1995/archive/2018/08/29/9553572.html

 

1、安装Docker,命令:yum install docker-ce   默认安装最新版本

yum install docker-ce

安装Docker,命令:yum install docker-ce-版本号,我选的是17.12.1.ce,如下

复制代码

[root@localhost ~]# yum install docker-ce-17.12.1.ce

2、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的

$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2

3、启动并加入开机启动

$ sudo systemctl start docker
$ sudo systemctl enable docker

4、验证安装是否成功(有client和service两部分表示docker安装启动都成功了)

$ docker version

CentOS7 Nvidia Docker环境搭建

CentOS7 Nvidia Docker环境搭建

最近在搞tensorflow的一些东西,话说这东西是真的皮,搞不懂。但是环境还是磕磕碰碰的搭起来了

其实本来是没想到用docker的,但是就一台配置较好的服务器,还要运行公司的其他环境,vmware esxi用起来太费劲,还是算了。

环境:

系统:CentOS7 7.4 1708

显卡:Nvidia 1080Ti

下载所有需要的东东

1、docker-ce yum repo : https://download.docker.com/linux/centos/docker-ce.repo

2、nvidia-docker yum repo : https://nvidia.github.io/nvidia-docker/centos7/x86_64/nvidia-docker.repo

3、nvidia cuda yum repo : http://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/cuda-repo-rhel7-9.1.85-1.x86_64.rpm

4、nvidia cudnn : https://developer.nvidia.com/cudnn

这个东西需要注册nvidia账号,就不给直接下载地址了。

5、nvidia驱动 : http://www.nvidia.cn/Download/index.aspx?lang=cn

按自己的显卡型号下载

6、nvidia docker file : https://hub.docker.com/r/nvidia/cuda/

这里面可以看到很多dockerfile,选择

9.0-base-centos7 (9.0/base/Dockerfile)

其他的cuda9.1这些应该也可以用,另外有像devel和runtime这样的,其实就是yum安装的cuda包不太一样,没多大关系。

点进去后复制下来保存为Dockerfile文件,但是之后搞的时候发现有点问题,修改了一下,可以从这儿复制

FROM centos:7

LABEL maintainer "NVIDIA CORPORATION <cudatools@nvidia.com>"

RUN NVIDIA_GPGKEY_SUM=d1be581509378368edeec8c1eb2958702feedf3bc3d17011adbf24efacce4ab5 && \

  curl -fsSL https://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/7fa2af80.pub | sed ''/^Version/d'' > /etc/pki/rpm-gpg/RPM-GPG-KEY-NVIDIA && \

  echo "$NVIDIA_GPGKEY_SUM /etc/pki/rpm-gpg/RPM-GPG-KEY-NVIDIA" | sha256sum -c --strict -

#COPY cuda.repo /etc/yum.repos.d/cuda.repo

ENV CUDA_VERSION 9.0.176

ENV CUDA_PKG_VERSION 9-0-$CUDA_VERSION-1

#RUN yum install -y \

#    cuda-cudart-$CUDA_PKG_VERSION && \

#  ln -s cuda-9.0 /usr/local/cuda && \

#  rm -rf /var/cache/yum/*
# nvidia-docker 1.0

LABEL com.nvidia.volumes.needed="nvidia_driver"

LABEL com.nvidia.cuda.version="${CUDA_VERSION}"

RUN echo "/usr/local/nvidia/lib" >> /etc/ld.so.conf.d/nvidia.conf && \

  echo "/usr/local/nvidia/lib64" >> /etc/ld.so.conf.d/nvidia.conf

ENV PATH /usr/local/nvidia/bin:/usr/local/cuda/bin:${PATH}

ENV LD_LIBRARY_PATH /usr/local/nvidia/lib:/usr/local/nvidia/lib64

# nvidia-container-runtime

ENV NVIDIA_VISIBLE_DEVICES all

ENV NVIDIA_DRIVER_CAPABILITIES compute,utility

ENV NVIDIA_REQUIRE_CUDA "cuda>=9.0" 

所有的文件

[root@localhost nvidia]# pwd
/root/nvidia
[root@localhost nvidia]# ll
total 420000
drwxr-xr-x. 2 root root   4096 Feb 10 10:50 centos-gpu
-rw-r--r--. 1 root root   3335 Jan 29 10:36 cuda-repo-rhel7-9.1.85-1.x86_64.rpm
-rw-r--r--. 1 root root 348817823 Feb 6 16:26 cudnn-9.0-linux-x64-v7.tgz
-rw-r--r--. 1 root root   2424 Feb 9 10:36 docker-ce.repo
-rw-r--r--. 1 root root    796 Feb 9 17:11 nvidia-docker.repo
-rwxr-xr-x. 1 root root 81242220 Jan 31 14:19 NVIDIA-Linux-x86_64-390.25.run

centos-gpu里有Dockerfile文件

准备工作

直接上命令,一看就明白

[root@localhost nvidia]# cp docker-ce.repo nvidia-docker.repo /etc/yum.repos.d/
[root@localhost nvidia]# rpm -ivh cuda-repo-rhel7-9.1.85-1.x86_64.rpm
[root@localhost nvidia]# yum install epel-release
[root@localhost nvidia]# yum install gcc gcc-c++

[root@localhost nvidia]# yum install kernel*

安装驱动

[root@localhost nvidia]# echo "blacklist nouveau" >>/etc/modprobe.d/blacklist.conf
[root@localhost nvidia]# mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak dracut -v /boot/initramfs-$(uname -r).img $(uname -r) 
[root@localhost nvidia]# init 3 
[root@localhost nvidia]# chmod +x NVIDIA-Linux-x86_64-390.25.run 
[root@localhost nvidia]# ./NVIDIA-Linux-x86_64-390.25.run

大概步骤就是这样,如果出现问题,可以直接网上找一找,应该不会太难

安装和启动docker

[root@localhost nvidia]# yum install docker-ce nvidia-docker
[root@localhost nvidia]# systemctl enable docker
[root@localhost nvidia]# systemctl start docker
[root@localhost nvidia]# systemctl enable nvidia-docker
[root@localhost nvidia]# systemctl start nvidia-docker

记得显卡驱动一定要先装好,nvidia-docker才能正常启动

制作docker镜像

[root@localhost nvidia]# yum install cuda-cudart-9-0-9.0.176-1
[root@localhost nvidia]# ln -s cuda-9.0 /usr/local/cuda
[root@localhost nvidia]# nvidia-docker build -t centos-nvidia /root/nvidia/centos-gpu

如果你是用的我修改的Dockfile应该不会有什么问题,如果你是用的原版的,可能会在

#COPY cuda.repo /etc/yum.repos.d/cuda.repo

出错,但是咱们已经下载cuda 的 repo,并安装了,所以这一步可以不用。

镜像制作结束后,可以用命令 docker images 查看一下:

[root@localhost centos-gpu]# docker images
REPOSITORY       TAG         IMAGE ID      CREATED       SIZE
centos-nvidia      latest       a02c8e0ad5ca    2 hours ago     207MB

如果有这一行应该就算是成功了。

生成docker

[root@localhost centos-gpu]# nvidia-docker run --name="centos-gpu2" -ti a02c /bin/bash
[root@34d532e76913 /]# nvidia-smi 
Sat Feb 10 03:42:20 2018    
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 390.25         Driver Version: 390.25          |
|-------------------------------+----------------------+----------------------+
| GPU Name    Persistence-M| Bus-Id    Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap|     Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
|  0 GeForce GTX 108... Off | 00000000:02:00.0 Off |         N/A |
| 23%  17C  P8   8W / 250W |   10MiB / 11178MiB |   0%   Default |
+-------------------------------+----------------------+----------------------+
                                        
+-----------------------------------------------------------------------------+
| Processes:                            GPU Memory |
| GPU    PID  Type  Process name               Usage   |
|=============================================================================|
| No running processes found                         |
+-----------------------------------------------------------------------------+
[root@34d532e76913 /]# exit

如果类似于上面的输出结果,差不多就可以了。

使用Docker

[root@localhost centos-gpu]# nvidia-docker ps -a
CONTAINER ID    IMAGE        COMMAND       CREATED       STATUS           PORTS        NAMES
34d532e76913    a02c        "/bin/bash"     3 minutes ago    Exited (0) 12 seconds ago            centos-gpu2
d16c2db2bf2e    a02c        "/bin/bash"     2 hours ago     Exited (0) 19 minutes ago            centos-gpu
370671db8df1    3afd        "/bin/bash"     19 hours ago    Exited (137) 3 hours ago            centos-dronemap
[root@localhost centos-gpu]# nvidia-docker start 34d5
34d5
[root@localhost centos-gpu]# nvidia-docker cp /root/nvidia/cuda-repo-rhel7-9.1.85-1.x86_64.rpm 34d532e76913:/root
[root@localhost centos-gpu]# nvidia-docker exec -ti 34d5 /bin/bash
[root@34d532e76913 /]# cd
[root@34d532e76913 ~]# ls
anaconda-ks.cfg cuda-repo-rhel7-9.1.85-1.x86_64.rpm
[root@34d532e76913 ~]# rpm -ivh cuda-repo-rhel7-9.1.85-1.x86_64.rpm 
warning: cuda-repo-rhel7-9.1.85-1.x86_64.rpm: Header V3 RSA/SHA512 Signature, key ID 7fa2af80: NOKEY
Preparing...             ################################# [100%]
Updating / installing...
  1:cuda-repo-rhel7-9.1.85-1     ################################# [100%]
[root@34d532e76913 ~]# yum install cuda-*9-0*

这里需要注意的是类似于 34d532e76913 这样的编号,是docker自动生成的,运行的时候需要修改一下。

到目前基本上cuda的环境就搭建好了。

TensorFlow

把下载的cudnn包用docker cp复制到docker中,解压下来,将里面的lib64路径添加到 /etc/ld.so.conf.d/nvidia.conf 中,运行ldconfig,就ok了。

上面的环境好了以后,再安装python等等软件,这就不说了。之后tensorflow的一些例子就可以在docker里运行了。当然你得安装gpu版本的,才能发挥显卡的威力。

另外也可以不必要这么麻烦,有已经制作好的镜像可以拿来用,可以参考:https://hub.docker.com/r/tensorflow/tensorflow/

其他

另外也有现成的cuda镜像可以用,参考:https://hub.docker.com/r/nvidia/cuda/  

直接使用命令:docker pull nvidia/cuda 就可以下载镜像了,只不过这是ubuntu版本的,和我们的生成环境不符,如果要其他版本的可以参考上面的例子。

最后

这一段时间没有写什么东西,另外之前的关于图形绘图的东西,一直没扔,已经有很多东西可以和大家分享了,只不过时间很少,还没来得及整理。等有空了就能听着音乐在屏幕前磨洋工了,KeKe~。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

您可能感兴趣的文章:
  • 在CentOS 7上安装Docker环境的方法与注意事项
  • 详解docker镜像centos7配置Java运行环境
  • 详解Centos6.5下docker 环境搭建
  • centos搭建部署docker环境的详细步骤

今天关于docker 学习 2 - 快速搭建 centos7-python3.6 环境docker搭建python开发环境的介绍到此结束,谢谢您的阅读,有关CentOS 下使用 Docker 快速搭建 LNMP 环境、centos7 docker 安装 和在 docker 中搭建 lnmp 环境、centos7 docker安装 和在docker中搭建lnmp环境、CentOS7 Nvidia Docker环境搭建等更多相关知识的信息可以在本站进行查询。

本文标签: