docker docker安装 nvidia-docker安装 拉取ubuntu镜像 部署paddlepaddleOCR项目

1、docker安装

以ubuntu为例

设置存储库:

# 1. 更新apt包索引
sudo apt-get update

# 2. 安装包以允许apt通过HTTPS使用存储库
sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

# 3. 添加Docker的官方GPG密钥:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

# 4. 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88通过搜索指纹的最后8个字符,验证您现在拥有带指纹的密钥 。一般都是一样的秘钥
sudo apt-key fingerprint 0EBFCD88
"""
pub   rsa4096 2017-02-22 [SCEA]
      9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88
uid           [ unknown] Docker Release (CE deb) <docker@docker.com>
sub   rsa4096 2017-02-22 [S]
"""

# 5. 设置稳定存储库
sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

安装DOCKER CE:

# 1. 更新apt包索引
sudo apt-get update

# 2. 安装最新版本的Docker CE和containerd,或者转到下一步安装特定版本
sudo apt-get install docker-ce docker-ce-cli containerd.io

# 3. 列出当前仓库可用版本
apt-cache madison docker-ce

# 4. 根据显示的版本选择其中一个进行安装,比如目前我写这篇最新的为5:18.09.1~3-0~ubuntu-xenial
sudo apt-get install docker-ce=5:18.09.1~3-0~ubuntu-xenial docker-ce-cli=5:18.09.1~3-0~ubuntu-xenial containerd.io

当安装成功后,我们可以利用docker -version进行查看当前情况

$ docker -version

unknown shorthand flag: 'e' in -ersion
See 'docker --help'.

Usage:  docker [OPTIONS] COMMAND

A self-sufficient runtime for containers

Options:
      --config string      Location of client config files (default "/root/.docker")
  -D, --debug              Enable debug mode
  -H, --host list          Daemon socket(s) to connect to
  -l, --log-level string   Set the logging level ("debug"|"info"|"warn"|"error"|"fatal")
                           (default "info")
      --tls                Use TLS; implied by --tlsverify
      --tlscacert string   Trust certs signed only by this CA (default
                           "/root/.docker/ca.pem")
      --tlscert string     Path to TLS certificate file (default "/root/.docker/cert.pem")
      --tlskey string      Path to TLS key file (default "/root/.docker/key.pem")
      --tlsverify          Use TLS and verify the remote
  -v, --version            Print version information and quit

Management Commands:
  builder     Manage builds
  checkpoint  Manage checkpoints
  config      Manage Docker configs
  container   Manage containers
  engine      Manage the docker engine
  image       Manage images
  manifest    Manage Docker image manifests and manifest lists
  network     Manage networks
  node        Manage Swarm nodes
  plugin      Manage plugins
  secret      Manage Docker secrets
  service     Manage services
  stack       Manage Docker stacks
  swarm       Manage Swarm
  system      Manage Docker
  trust       Manage trust on Docker images
  volume      Manage volumes

Commands:
  attach      Attach local standard input, output, and error streams to a running container
  build       Build an image from a Dockerfile
  commit      Create a new image from a container's changes
  cp          Copy files/folders between a container and the local filesystem
  create      Create a new container
  deploy      Deploy a new stack or update an existing stack
  diff        Inspect changes to files or directories on a container's filesystem
  events      Get real time events from the server
  exec        Run a command in a running container
  export      Export a container's filesystem as a tar archive
  history     Show the history of an image
  images      List images
  import      Import the contents from a tarball to create a filesystem image
  info        Display system-wide information
  inspect     Return low-level information on Docker objects
  kill        Kill one or more running containers
  load        Load an image from a tar archive or STDIN
  login       Log in to a Docker registry
  logout      Log out from a Docker registry
  logs        Fetch the logs of a container
  pause       Pause all processes within one or more containers
  port        List port mappings or a specific mapping for the container
  ps          List containers
  pull        Pull an image or a repository from a registry
  push        Push an image or a repository to a registry
  rename      Rename a container
  restart     Restart one or more containers
  rm          Remove one or more containers
  rmi         Remove one or more images
  run         Run a command in a new container
  save        Save one or more images to a tar archive (streamed to STDOUT by default)
  search      Search the Docker Hub for images
  start       Start one or more stopped containers
  stats       Display a live stream of container(s) resource usage statistics
  stop        Stop one or more running containers
  tag         Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
  top         Display the running processes of a container
  unpause     Unpause all processes within one or more containers
  update      Update configuration of one or more containers
  version     Show the Docker version information
  wait        Block until one or more containers stop, then print their exit codes

Run 'docker COMMAND --help' for more information on a command.

2、 nvidia-docker安装

curl https://get.docker.com | sh

sudo systemctl start docker && sudo systemctl enable docker

# 设置stable存储库和GPG密钥:
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
   && 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

# 要访问experimental诸如WSL上的CUDA或A100上的新MIG功能之类的功能,您可能需要将experimental分支添加到存储库列表中.
# 可加可不加
curl -s -L https://nvidia.github.io/nvidia-container-runtime/experimental/$distribution/nvidia-container-runtime.list | sudo tee /etc/apt/sources.list.d/nvidia-container-runtime.list

# nvidia-docker2更新软件包清单后,安装软件包(和依赖项):
sudo apt-get update

sudo apt-get install -y nvidia-docker2

# 设置默认运行时后,重新启动Docker守护程序以完成安装:
sudo systemctl restart docker

到此如果没有什么没问题,ubuntu的nvidia-docker就此安装成功

nvidia-docker部署问题

我们可以运行nvidia给的测试镜像

# nvidia-docker:nvidia-container-toolkit的安装方式
docker run --gpus=all --rm nvidia/cuda:10.0-base nvidia-smi

# nvidia-docker2
docker run --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=all --rm nvidia/cuda:10.0-base nvidia-smi
or 
nvidia-docker run -e NVIDIA_VISIBLE_DEVICES=all --rm nvidia/cuda:10.0-base nvidia-smi

阿里云容器镜像

3、配置本机Docker运行镜像加速器

鉴于国内网络问题,后续拉取Docker镜像十分缓慢,我们可以需要配置加速器来解决,
在这里插入图片描述

4、docker常用指令

1、帮助命令

docker Version		# 查看docker版本信息

docker info			# 查看docke详细信息

docker --help

2、镜像命令

docker images 列出本机上的镜像
在这里插入图片描述
在这里插入图片描述

3、查找镜像命令

docker search 某个XXX镜像的名字

在这里插入图片描述

4、拉取镜像指令

docker pull 某个镜像的名字

在这里插入图片描述

5、删除镜像指令

docker rmi 某个XXX镜像的名字ID

在这里插入图片描述

6、创建容器指令

docker run -it -d -p 11883:45055 --restart=always --name 容器名 镜像ID /bin/bash ./run.sh
#-d 后台运行 -p 指定端口映射  11883 主机端口 45055容器端口  --restart=always 容器开机自启动 
# /bin/bash ./run.sh 容器启动时自动运行脚本

在这里插入图片描述
举例:

nvidia-docker run --runtime=nvidia -it -p 8888:8081 --name gqr_ocr d07b41e8c86f /bin/bash
# gqr_ocr :为容器名;d07b41e8c86f:为镜像ID

在这里插入图片描述
全面的写法举例:

docker run -d -p 9080:8080 -name myt9
 -v /zyuse/mydockerfiletomcat9/test:/usrlocal/apache-tomcat9.0.8/webapps/test
 -v /zzyyuse/mydockerfile/tomcat9/tomcat9logs/:/usrlocal/apache-tomcat-9.0.8/logs -privileged=true zzyytomcat9

在这里插入图片描述

7、列出当前所有正在运行的容器

docker ps [OPTIONS]

在这里插入图片描述

8、退出容器

两种退出方式

exit    # 容器停止退出
​ctrl+P+Q   # 容器不停止退出

9 、启动容器

docker start 容器ID或容器签名

10、重启容器

docker restart 容器ID或容器签名

11、停止容器

docker stop 容器ID或容器签名

12、删除已停止的容器

docker rm -f 容器ID  	# -f:表示强制删除

​一次性删除多个容器
​docker rm -f $(docker ps -a -q)
​docker ps -a -q | xargs docker rm

13、查看容器日志

docker logs -f -t --tail 容器ID 
​	# -t 是加入时间戳
​	# -f 跟随最新的日志打印
​	#  --tail 数字显示最后多少条

14、查看容器内的进程

docker top 容器ID 

在这里插入图片描述

15、查看容器内部细节

docker inspect 容器ID

16、进入正在运行的容器并以命令行交互(进入容器先先启动容器)

docker start 容器ID或名称

docker exec -it 容器ID或容器名 /bin/bash			# 进入容器指令

在这里插入图片描述

16、数据拷贝

docker cp 本地文件路径 容器id:路径  # 本地到容器
docker cp 容器id:文件路径 本地路径  # 容器到本地

在这里插入图片描述

17、将容器转化为镜像

docker commit 容器名称 镜像名称

在这里插入图片描述

18、Docker容器数据卷

在这里插入图片描述

docker run -it -v /宿主机绝对路径目录:/容器内目录 --name 容器名 镜像名

在这里插入图片描述
在这里插入图片描述
容器间传递共享(–volumes -from)

在这里插入图片描述

19、利用Dockerfile构建镜像

Dockerfile是用来构建Docker镜像的构建文件,由一系列命令和参数构成的脚本
在这里插入图片描述
在这里插入图片描述


在这里插入图片描述

在这里插入图片描述

20、查看镜像被其他哪些镜像所依赖的指令

当删除镜像时会出现以下报错,主要原因是该镜像被其他镜像所依赖,需要查找出依赖于该镜像的其它镜像

docker rmi 593b81400043 
Error response from daemon: conflict: unable to delete 593b81400043 (cannot be forced) - image has dependent child images

查询语句:

docker image inspect --format='{{.RepoTags}} {{.Id}} {{.Parent}}' $(docker image ls -q --filter since=xxxxxx)

其中 xxxxxx 是报错 image 的 id,在文章开头的例子中就是 6ec9a5a0fc9f。从列表中查找到之后就可以核对并删除这些 image。

在这里插入图片描述

使用dockerfile文件构建ubuntu镜像

步骤

1、新建文件夹
mkdir docker_test
cd docker_test
2、创建Dockerfile文件,文件内容如下
FROM ubuntu:16.04
 
 
MAINTAINER LXY
 
ENV LANG C.UTF-8
 
#执行镜像中的provision.sh脚本
COPY provision.sh /home/
RUN chmod a+x /home/provision.sh
RUN /home/provision.sh
 
 
#解决时区问题
RUN apt-get update -y && apt-get upgrade -y
# 安装,中国用户填写[Asia/Shanghai] ,表示亚洲/上海 ,东八区
RUN apt-get install -y tzdata && ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
3、创建provision.sh脚本,内容如下:
#!/bin/bash
set -e
 
apt-get update
#安装vim
#apt-get -y install vim
 
#解决vim中文乱码
#vim /etc/vim/vimrc
#set fileencodings=utf-8,gbk,utf-16le,cp1252,iso-8859-15,ucs-bom
#set termencoding=utf-8
#set encoding=utf-8
#
#安装sqlite3
apt-get install libsqlite3-dev
apt-get -y install gcc
 
#解决ssl No module named _ssl
apt-get install libssl-dev -y
#
apt-get install make
 
apt-get -y install zlib*
 
#安装wget
apt-get -y install wget
 
#下载python
wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz
#解压tgz
tar -xvzf Python-3.6.5.tgz
 
#
cd Python-3.6.5
./configure --with-ssl
make && make install
 
ln -sf /usr/local/bin/python3 /usr/bin/python
 
#解决opencv 报错
apt-get -y install libgl1-mesa-glx
 
apt-get install -y libglib2.0-dev 
 
 
#删除安装文件
#rm -R Python*
 
#升级pip
python3 -m pip install --upgrade pip
 
pip3 install -r requirements.txt -i https://pypi.douban.com/simple
 
 
#mysql
#cd /home
#wget https://dev.mysql.com/get/mysql-apt-config_0.8.15-1_all.deb
 
 
 
 
 
 
#中文编码问题
#export  LANG=C.UTF-8
 
#解决cv2 问题
#apt-get -y install libgl1-mesa-glx
#python -V
 
#升级pip
#python -m pip install --upgrade pip
4、创建镜像
docker build -t image_name .
 
# image_name 为创建的镜像名称,. 表示当前目录(docker_test)
 
# 执行该命令会自动按照Dockerfile文件中的内容生成镜像

在这里插入图片描述

使用docker exec -it 在不进入容器内部的情况下执行指令:

docker exec watch_ocr bash -c "cd /home/docker_data/googosoft_OCR && python3 server.py ";

5、拉取paddlepaddle的docker镜像

在这里插入图片描述
在这里插入图片描述

# 切换到工作目录下
cd /home/Projects
# 首次运行需创建一个docker容器,再次运行时不需要运行当前命令
# 创建一个名字为ppocr的docker容器,并将当前目录映射到容器的/paddle目录下

如果您希望在CPU环境下使用docker,使用docker而不是nvidia-docker创建docker
sudo docker run --name ppocr -v $PWD:/paddle --network=host -it hub.baidubce.com/paddlepaddle/paddle:latest-gpu-cuda9.0-cudnn7-dev /bin/bash

如果使用CUDA9,请运行以下命令创建容器
sudo nvidia-docker run --name ppocr -v $PWD:/paddle --network=host -it hub.baidubce.com/paddlepaddle/paddle:latest-gpu-cuda9.0-cudnn7-dev /bin/bash

如果使用CUDA10,请运行以下命令创建容器
sudo nvidia-docker run --name ppocr -v $PWD:/paddle --network=host -it hub.baidubce.com/paddlepaddle/paddle:latest-gpu-cuda10.0-cudnn7-dev /bin/bash

您也可以访问[DockerHub](https://hub.docker.com/r/paddlepaddle/paddle/tags/)获取与您机器适配的镜像。

# ctrl+P+Q可退出docker,重新进入docker使用如下命令
sudo docker container exec -it ppocr /bin/bash

在这里插入图片描述

# 下载CUDA9 docker的压缩文件,并解压
wget https://paddleocr.bj.bcebos.com/docker/docker_pdocr_cuda9.tar.gz
# 为减少下载时间,上传的docker image是压缩过的,需要解压使用
tar zxf docker_pdocr_cuda9.tar.gz
# 创建image
docker load < docker_pdocr_cuda9.tar
# 完成上述步骤后通过docker images检查是否加载了下载的镜像
docker images
# 执行docker images后如果有下面的输出,即可按照按照 步骤1 创建docker环境。
hub.baidubce.com/paddlepaddle/paddle   latest-gpu-cuda9.0-cudnn7-dev    f56310dcc829

在这里插入图片描述

python3 -m pip install --upgrade pip

如果您的机器安装的是CUDA9或CUDA10,请运行以下命令安装
python3 -m pip install paddlepaddle-gpu==2.0.0b0 -i https://mirror.baidu.com/pypi/simple

如果您的机器是CPU,请运行以下命令安装

python3 -m pip install paddlepaddle==2.0.0b0 -i https://mirror.baidu.com/pypi/simple

更多的版本需求,请参照[安装文档](https://www.paddlepaddle.org.cn/install/quick)中的说明进行操作。

在这里插入图片描述

【推荐】git clone https://github.com/PaddlePaddle/PaddleOCR

如果因为网络问题无法pull成功,也可选择使用码云上的托管:

git clone https://gitee.com/paddlepaddle/PaddleOCR

注:码云托管代码可能无法实时同步本github项目更新,存在3~5天延时,请优先使用推荐方式。

在这里插入图片描述

cd PaddleOCR
python3 -m pip install -r requirements.txt

6、将本地镜像推送到阿里云

创建镜像仓库:
在这里插入图片描述
点击下图中的 “管理” 按钮:
在这里插入图片描述
登录阿里云账号
在这里插入图片描述

$ sudo docker login --username=gqr0911 registry.cn-hangzhou.aliyuncs.com
$ sudo docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/googosoft/googosoft_project:[镜像版本号]
$ sudo docker push registry.cn-hangzhou.aliyuncs.com/googosoft/googosoft_project:[镜像版本号]

在这里插入图片描述

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值