Docker环境搭建以及相关指令

一 . 实施背景

因项目中可能使用的opencv版本比较高,(ubuntu18.04中ros自带opencv版本低(3.0),直接使用opencv编译比较麻烦(时间消耗太长))主要是依赖ros环境,所以直接使用docker安装ubuntu20.04的系统环境,这样可以使用较高版本的ros-opencv,20.04中opencv版本为4.0,所以搭建如此环境:其中驱动以及cuda cudnn tensorrt都是自己安装(和linux_x86基本一致)

二 . docker 镜像设置 “用于加速下拉镜像”

“主机中输入以打开docker镜像配置修改”

vim /etc/docker/daemon.json
or
gedit /etc/docker/daemon.json

	{
	  "registry-mirrors": ["https://epsax6ut.mirror.aliyuncs.com"],
	}
	{
	  "registry-mirrors": ["https://f6tophti.mirror.aliyuncs.com"]
	}

三 . docker相关命令

“root下直接使用docker //用户名下需要在docker 命令前加上sudo”

  1. docker查看镜像
    docker images

  2. docker查看容器
    docker ps -a

  3. docker 启动镜像—也就成为了容器
    docker run -it --name=镜像名字 --gpus all 镜像名字:版本 /bin/bash

  4. docker 进入容器内部
    docker exec --it (容器)id /bin/bash
    // 如果进不去需要将dokcer ps -a中的id start:
    docker (容器)id start
    docker exec -it (容器)id /bin/bash
    //运行此命令就算进来我们的容器了

    讲解:上述3为启动镜像为容器,若想要在新的终端中查看容器 不可再次执行上述3 :单次执行3启动不一样的容器可以使用上述2来查看,当启动镜像为容器后执行4即可进入容器

  5. docker映射我们宿主机的驱动 (docker内装不了驱动,所以映射主机的需要确定主机是否有nvidia-smi)
    docker run --gpus all 镜像名字:版本 /bin/bash

    注意:宿主机和容器驱动统一,容器内环境需要和驱动兼容

  6. docker容器内 静态查看gpu占用/动态查看gpu占用 //映射后查看gpu占用率的命令
    nvidia-smi or watch -n 1 nvidia-smi

  7. 删除容器 镜像 (先删容器再删除镜像)
    docker rm -f (容器)id//删除你启动的容器
    docker rmi (镜像)id //删除你创建的镜像

  8. docker内有时候更改docker内source后需要重启镜像才会生效
    docker restart (容器)id

  9. 提交容器为镜像(在你自己的本地备份一个环境,以免没有备份时,基础环境被自己破坏)
    docker commit -m “描述” -a “作者” (需要备份的容器)id 备份后镜像名字:版本

    注意:1. docker容器是启动某个镜像后生成的容器内进行操作,若在操作容器没有备份的情况下删除了该容器,则资料全无。
    2.再次启动镜像为容器----则为新的容器 .3.commit后正常来说docker image 后会展示你备份的新的镜像,证明备份成功,可使用下述12将镜像打包至它处

  10. docker外部复制进来东西 /home/dudu/work为容器内自己创建的路径
    docker cp ./cudnn-linux-x86_64-8.4.1.50_cuda10.2-archive.tar.xz (容器id):/home/dudu/work

  11. 导出镜像包 和导入镜像包
    docker save -o ***.tar (镜像名字)name:(镜像版本)version
    docker load -i ***.tar

  12. docker设置容器启动时,带起来自启动脚本 :-c 为该容器内路径
    docker run -it --name=镜像名字 --gpus all 镜像名字:版本 /bin/bash -c “/etc/service_init.sh start”

  13. 设置容器开机自启动
    docker update —restart=always 容器id

  14. 挂载相关位置(外变内变)
    doker run -it -v /home/:/home name /bin/bash

    注意:挂载到宿主机可以说是只用docker内环境保证宿主机环境的干净,程序在外边(运行程序要在docker内),容器内挂载位置若有程序,最好备份,因为挂载后容器以宿主机为主,宿主机/home/路径下没有文件,docker内/home/下有也会消失,除非容器挂载位置的文件夹干净。

四 . 上传镜像

“用户可以通过 docker push 命令,把自己创建的镜像上传到仓库中来共享。例如,用户在 Docker Hub 上完成注册后,可以推送自己的镜像到仓库中,远程仓库可设置权限,可以设置与其他用户共享。”

1 . docker查看镜像
docker images

 REPOSITORY                TAG         IMAGE ID       CREATED         SIZE
 ubuntu20.04_best          latest      affaa49f362e   7 weeks ago     18.8GB

2 .将本地制作镜像上传至云端阿里云 (自己创建账号)
sudo docker restart

3 .docker镜像打包 == tag ubuntu20.04_best:latest
docker tag ubuntu20.04_best:latest registry.cn-beijing.aliyuncs.com/ubuntu_20-04/ubuntu20.04_best:1.0

4 .再次查看镜像
docker images

   REPOSITORY                                                       TAG         IMAGE ID       CREATED         SIZE
   ubuntu20.04_best                                                 latest      affaa49f362e   7 weeks ago     18.8GB
   registry.cn-beijing.aliyuncs.com/ubuntu_20-04/ubuntu20.04_best   1.0         affaa49f362e   7 weeks ago     18.8GB

5 . 上传docker hub
docker push registry.cn-beijing.aliyuncs.com/ubuntu_20-04/ubuntu20.04_best:1.0

注意:由于我自己做的镜像为ubuntu系统,其中含有大量深度学习的相关依赖,做出的镜像大概占用50G,docker hub指定传不上去,所以自己硬盘备份。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值