Ubuntu中利用Docker运行OpenPose具体使用方法

想看怎么安装Docker和Docker中安装openpose请看我另一篇文章:
Ubuntu从头开始使用Docker运行OpenPose
本文主要是介绍怎么在Docker中使用OpenPose的方法:

1. 包括怎么把数据传输给Docker
2. 怎么在python中使用ubuntu命令行
3. 怎么在系统中直接运行py文件

Docker中数据传输

Docker操作:

在这里插入图片描述
概念:
imagers:镜像
containers:容器

imagers(镜像)

本地镜像管理

  • images:列出本地镜像
  • rmi:删除本地一个或多少镜像,-f 为强制移除
  • tag:标记本地镜像,将其归入某一仓库
  • build:命令用于使用 Dockerfile 创建镜像
  • history:查看指定镜像的创建历史
  • save:将指定镜像保存成 tar 归档文件
  • load:导入使用 docker save 命令导出的镜像
  • import:从归档文件中创建镜像
# 查看所有镜像文件
docker images

在这里插入图片描述
显示为可执行的镜像文件。

容器(containers)

容器生命周期管理

  • run:创建一个新的容器并运行一个命令
  • start/stop/restart:启动、停止、重启容器
  • kill:杀掉一个运行中的容器
  • rm:删除一个或多个容器
  • pause/unpause:暂停和恢复容器中所有的进程
  • create:创建一个新的容器但不启动它
  • exec:在运行的容器中执行命令,即没有连接容器,让容器直接执行命令。

容器操作

  • ps:列出容器
  • inspect:获取容器/镜像的元数据
  • top:查看容器中运行的进程信息
  • attach:连接到正在运行中的容器
  • events:从服务器获取实时事件
  • logs::获取容器的日志
  • wait:阻塞运行直到容器停止,然后打印出它的退出代码
  • export:将文件系统作为一个tar归档文件导出到STDOUT
  • port:列出指定的容器的端口映射,或者查找将PRIVATE_PORT NAT到面向公众的端口

如果要退出bash有2种操作:1)Ctrl + d 退出并停止容器;2)Ctrl + p + q 退出并在后台运行容器;
每次 执行docker run则生成一个容器(containers)

# 显示所有的容器,包括未运行的。
docker ps -a

在这里插入图片描述

# 启动容器mjsobrep/openpose
$ docker start a77194a1b7ed
# 连接到正在运行中的容器mjsobrep/openpose
$ docker attach a77194a1b7ed

在这里插入图片描述

Docker中文件使用:

Docker容器向宿主机传送文件
容器启动或关闭不影响文件传输
格式:

docker cp container_id:<docker容器内的路径> <本地保存文件的路径>

比如:

# 他会把容器中整个output文件夹拷贝到宿主机的out_data下
docker cp a77194a1b7ed:/openpose-master/output /home/zeven/PycharmProjects/qz/data

宿主机向Docker容器传送文件
格式:

docker cp 本地文件的路径 container_id:<docker容器内的路径>

比如:

docker cp  /home/zeven/py/data/zp a77194a1b7ed:/openpose-master/input_data 

python中执行Ubuntu命令行语言

subprocess模块
在python 中使用ubuntu的命令行

# command 为输入的命令行语句
def cmd(command):
    print(command, "开始了")
    subp = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, encoding="utf-8")
    # 等待500秒不响应就推出
    subp.wait(500)
    if subp.poll() == 0:
        print(subp.communicate())  # 输出返回的结果值
    else:
        print("失败")
    print("结束了")

不进入docker,在容器外执行容器内的命令

# 删除openpose上次结果
sudo docker exec -it a77194a1b7ed /bin/bash -c 'rm -rf cb output/*'
# 运行openpose
sudo docker exec -it a77194a1b7ed /bin/bash -c './build/examples/openpose/openpose.bin --image_dir input_data/zp/ --write_keypoint_json output/ --no_display'
# 删除输入的数据
sudo docker exec -it a77194a1b7ed /bin/bash -c 'rm -rf cb input_data/*'

在这里插入图片描述

ubuntu中直接使用py文件

# cd到文件的目录
cd /home/zeven/PycharmProjects/qz
# 给执行的py文件权限
chmod a+x super_down_uphead.py
# 运行分类程序
python ./super_down_uphead.py

结果输出为json文件

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

勇气的动力

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值