docker 核心命令

docker 核心命令

docker 保存一个自己的镜像

docker commit 03c5388ee8ac jetson-inference-jupyterlab

docker 提交到仓库

docker tag jetson-inference-jupyterlab lijianyu110/jetson

or

docker tag jetson-inference-jupyterlab lijianyu110/jetson:jetson-inference-jupyterlab-v1

docker push 到远程仓库

docker push lijianyu110/jetson:v1

docker 启动一个容器,从一个镜像

docker run -it --rm --runtime nvidia --network host  -v ~/:/location/ nvcr.io/nvidia/l4t-ml:r32.7.1-py3

进入一个已经运行的容器

docker exec -it  container_centos7.3 /bin/bash

重启一个已经退出的容器

docker start -i dcc3302b54f7

启动带图形化界面的容器

Step1.在本地宿主机上安装x11界面服务
命令:

$ sudo apt-get install x11-xserver-utils
$ xhost +

Step2. 在启动docker容器时,添加选项如下:
-v /tmp/.x11-unix:/tmp/.x11-unix \ #共享本地unix端口
-e DISPLAY=unix$DISPLAY \ #修改环境变量DISPLAY
-e GDK_SCALE \ #这两个是与显示效果相关的环境变量
-e GDK_DPI_SCALE
完整命令:

docker run -it --rm --runtime nvidia -v /tmp/.x11-unix:/tmp/.x11-unix -v ~/:/location/  -e DISPLAY=unix$DISPLAY -e GDK_SCALE -e GDK_DPI_SCALE --net=host nvcr.io/nvidia/l4t-ml:r32.7.1-py3

不同类型的摄像头 参数不同

CSI 摄像头:使用 “-v /tmp/argus_socket:/tmp/argus_socket” 方式进行映射;
USB 摄像头:使用 “–device /dev/video” 方式进行映射,如果有多个 USB 摄像头则可以使用 “–device /dev/video --device /dev/video …” 方式添加到容器内

【备注】:xhost + 每次重新开机,在当前机器里面,不能远程 putty或ssh上去执行这个

xhost +

然后在启动docker, 我的都是jetson nano的,必须加入 --runtime nvidia 这样cv2 这些才能正常访问。

docker run -it --rm --runtime nvidia -v /tmp/.x11-unix:/tmp/.x11-unix -v ~/:/location/  -v /tmp/argus_socket:/tmp/argus_socket  -e DISPLAY=unix$DISPLAY -e GDK_SCALE -e GDK_DPI_SCALE --net=host nvcr.io/nvidia/l4t-ml:r32.7.1-py3

最后在给两个验证程序,第一个在docker里面能看图片

import cv2
frame = cv2.imread("boluo.jpg")
cv2.imshow("capture",frame)
cv2.waitKey(0)
cap.release()
cv2.destroyAllWindows()

boluo.jpg 文件下载后和程序放在同一目录

docker里面运行 摄像头 显示图片的程序

csiCamera.py 文件内容如下:

import cv2
gstreamer_pipeline = 'nvarguscamerasrc sensor-id=0 ! video/x-raw(memory:NVMM), width=1280, height=720, format=(string)NV12, framerate=(fraction)20/1 ! nvvidconv ! video/x-raw, width=(int)640, height=(int)360, format=(string)BGRx ! videoconvert ! appsink'
cap = cv2.VideoCapture(gstreamer_pipeline, cv2.CAP_GSTREAMER)

while(1):
    ret,frame = cap.read()
    cv2.imshow("capture",frame)
    if (cv2.waitKey(1) & 0xFF) == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值