1、docker容器暴露多个端口

  To expose just one port, this is what you need to do:

  docker run -p <host_port>:<container_port>

  To expose multiple ports, simply provide multiple -p arguments:

  docker run -p <host_port1>:<container_port1> -p <host_port2>:<container_port2>

  或者你可以直接桥接网络,然后在dockerfile上面直接expose你所需要的端口,这样可以免去-p参数

2、gitlab-runner自动化部署

  3.1、注册runner

    命令:sudo gitlab-ci-multi-runner register

➜  ~ sudo gitlab-ci-multi-runner register
Running in system-mode.                            

Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
http://193.188.2.40/
Please enter the gitlab-ci token for this runner:
Xyx8EEd4YeaMSLv7Snh7
Please enter the gitlab-ci description for this runner:
[sti-DL]: sdk_AutoDeploy
Please enter the gitlab-ci tags for this runner (comma separated):
sdk_AutoDeploy
Whether to run untagged builds [true/false]:
[false]: true
Whether to lock Runner to current project [true/false]:
[false]: true
Registering runner... succeeded                     runner=Xyx8EEd4
Please enter the executor: shell, docker+machine, docker-ssh+machine, docker-ssh, parallels, ssh, virtualbox, kubernetes, docker:
docker
Please enter the default Docker image (e.g. ruby:2.1):
dockerName:v1.0.0
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded! 

    

3.2、docker 挂载宿主的GPU驱动、cuda设备文件

  通过gitlab-ci-multi-runner register注册的Runner配置会存储在/etc/gitlab-runner/config.toml配置文件中,项目中的SDK需要调用英伟达显卡驱动和cuda,通过修改配置文件使得gitlab-runner启动容器时自动加载驱动和cuda。具体配置如下:

  ...
  1)、gitlab-runner启动容器时挂载宿主机驱动的方法

  .gitlab-ci.yml文件 gitlab-runner启动容器默认配置文件是不挂载宿主机上的NVIDIA驱动的,若想gitlab-ci启动容器挂载驱动,可以通过下面的方法:

  修改在*****目录下的config.toml配置文件。
如下:

[[runners]]
  name = "my-runner2"
  url = "http://182.158.10.30/"
  token = "d67392c2aa868f95ddd0256eb42b1b"
  executor = "docker"
  [runners.docker]
    tls_verify = false
    image = "127.0.0.1:5000/rs-sdk-test"
    privileged = false
    devices = ["/dev/nvidia0:/dev/nvidia0","/dev/nvidiactl:/dev/nvidiactl","/dev/nvidia-uvm","/dev/mem:/dev/mem"]
    disable_cache = false
    volumes = ["/cache"]
    shm_size = 0
  [runners.cache]

  主要是添加devices一行,gitlabrunner启动的容器就会自动挂载宿主机上的NVIDIA驱动。

  2)、在终端上启动容器挂载驱动和cuda的方法

    sudo docker
run -it --name NAME -v /home/:/mnt/home --privileged=true --device
/dev/nvidia-uvm:/dev/nvidia-uvm --device /dev/nvidia0:/dev/nvidia0
--device /dev/nvidiactl:/dev/nvidiactl myconda:cuda bash
    sudo
docker run --privileged=true --device /dev/nvidia0:/dev/nvidia0
--device /dev/nvidiactl:/dev/nvidiactl --device
/dev/nvidia-uvm:/dev/nvidia-uvm --device /dev/mem:/dev/mem -it
127.0.0.1:5000/rs-sdk-test:latest

  3.3、在master分支中添加.gitlab-ci.yml

    .gitlab-ci.yml文件的格式有特定的语法规则,详细语法见官方文档。本项目中的.yml文件如下:

    

image: localhost:/***:v1.0.0

before_script:
  - echo "hello world!"
stages:
  - build
  - test

job1:
  stage: build
  script:
    - nvidia-smi
    - cat /usr/local/cuda/version.txt
    - export OpenCV_DIR=/opt/ros/kinetic/include/opencv-3.3.1-dev
    - source /opt/ros/kinetic/setup.bash
    - cd /builds/rs_ws_test/
    - ls
    # - sh /builds/rs_ws_test/rs_perception/compileRos.sh
    - cd ~/PerceptionSDK/rs_ws_2.2.0/src
    - ls
    - rm -rf ~/PerceptionSDK/rs_ws_2.2.0/src/rs_perception
    - ls
    # - gnome-terminal -x ~/PerceptionSDK/rs_ws_2.2.0/roscore
    # - gnome-terminal -x ~/PerceptionSDK/rs_ws_2.2.0/rosparam list
    # - gnome-terminal -x ~/PerceptionSDK/rs_ws_2.2.0/rosparam get/rosdistro
    - mv /builds/rs_ws_test/rs_perception ~/PerceptionSDK/rs_ws_2.2.0/src/
    - mv ~/PerceptionSDK/rs_ws_2.2.0/src/rs_perception/tensorRT ~/PerceptionSDK/rs_ws_2.2.0/src/rs_perception/tensorRT10
    - mv ~/PerceptionSDK/rs_ws_2.2.0/src/rs_perception/tensorRT9 ~/PerceptionSDK/rs_ws_2.2.0/src/rs_perception/tensorRT
    - cd ~/PerceptionSDK/rs_ws_2.2.0
    - catkin_make
    - echo "hello world!"
  tags:
    - perception-runner

  3.4、写完.yaml配置文件后遇到下面这个问题

    解决方法:搞定在写。。。

  

docker容器自动化部署(一)的更多相关文章

  1. 基于Jenkins,docker实现自动化部署(持续交互)

      前言 随着业务的增长,需求也开始增多,每个需求的大小,开发周期,发布时间都不一致.基于微服务的系统架构,功能的叠加,对应的服务的数量也在增加,大小功能的快速迭代,更加要求部署的快速化,智能化.因此 ...

  2. 基于Jenkins,docker实现自动化部署(持续交互)【转】

      前言 随着业务的增长,需求也开始增多,每个需求的大小,开发周期,发布时间都不一致.基于微服务的系统架构,功能的叠加,对应的服务的数量也在增加,大小功能的快速迭代,更加要求部署的快速化,智能化.因此 ...

  3. springboot docker jenkins 自动化部署并上传镜像

    springboot + docker + jenkins自动化部署项目,jenkins.mysql.redis都是docker运行的,并且没有使用虚拟机,就在阿里云服务器(centos7)运行 1. ...

  4. Jenkins+Docker+Git 自动化部署

    Jenkins+Docker+Git 自动化部署图文教程 https://blog.csdn.net/qq_38252039/article/details/89791247 前言: 通过几天的学习和 ...

  5. spring boot本地开发与docker容器化部署的差异

    spring boot本地开发与docker容器化部署的差异: 1. 文件路径及文件名区别大小写: 本地开发环境为windows操作系统,是忽略大小写的,但容器中区分大小写 2. docker中的容器 ...

  6. Gogs的Docker容器化部署流程遇到的问题

    Gogs的Docker容器化部署流程遇到的问题   最近在学习CI/CD的一些方案,个人比较青睐容器化轻量级.CI方面一开始是想使用gitlab的,但是发现我自己买的服务器配置太低,内存根本不够(大写 ...

  7. Drools 7.15.0 docker容器方式部署

    关于drools的相关介绍就不再赘述了,关于drools网上的资料都很少,或者都有些老了,最近折腾了一下,记录下安装部署的过程,希望能节省下大家的时间. 一.快速部署 1.拉取基础镜像,命令如下: d ...

  8. 从零搭建docker+jenkins 自动化部署环境

    从零搭建docker+jenkins+node.js自动化部署环境 本次案例基于CentOS 7系统 适合有一定docker使用经验的人阅读 适合有一定linux命令使用经验的人阅读 1.docker ...

  9. Docker 容器化部署1小时简单入门

    Docker简介 Docker是DotCloud开源的.可以将任何应用包装在Linux container中运行的工具.2013年3月发布首个版本,当前最新版本为1.3.Docker基于Go语言开发, ...

随机推荐

  1. sitecore 8.2 item属性查询

    查询: query:/sitecore/content/[@@templatename='Homepage'] 结果: home (name: home, path: /sitecore/conten ...

  2. nginx 阻止非自己域名解析到服务器

    server模块加入 default_server server { listen 80 default_server; return 403; # return 301 https://$serve ...

  3. Scala环境搭建及Intellij IDEA安装

    1.JDK官网地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html Scala ...

  4. TypeError: '_io.TextIOWrapper' object does not support item assignment

    纯小白 遇到的细节问题: 报错 一开始看到这个傻逼了 TypeError: '_io.TextIOWrapper' object does not support item assignment 其实 ...

  5. JAVA EE 第二周(XML简述以及web请求的过程)

    一. 对于XML,我分别从以下几个方面来简述: 1.定义: XML是一种可扩展的标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言. (可扩展标记语言:可扩展标记语言是一 ...

  6. centos7.4卸载再安装mariadb服务无法启动问题

    今天yum安装MariaDB完成后,启动服务时一直报以下错误 Job for mariadb.service failed. See ‘systemctl status mariadb.service ...

  7. 练手——用Python写的时间戳转换为北京时间的小工具

    #北京时间需加上8小时bj = 8*3600 def time_stamp(times):    #一天总秒数    nonDaySeconds = 24*3600    leapmonths = [ ...

  8. 接触node第一步

    趁着工作不忙,今天来系统记录一下安装node环境: 1.node下载地址为:https://nodejs.org/en/,检查是否安装成功:如果输出版本号,说明我们安装node环境成功:node -v ...

  9. QSettings 类

    一 .QSettings介绍: 用户通常希望应用程序记住其设置.在windows中,这些设置保存在注册表中,ios在属性文件列表中,而unix,在缺乏标准的情况下,其存储在ini文本中.QSettin ...

  10. 【js】了解前端缓存,收获不止于此!

    了解前端缓存,收获不止于此! 这次我们来讲一下关于前端缓存的问题.感谢赵欢同学提供doc素材. 首先,开局我画了一张图,你会对文章有一个大局了解. 今天讲的是前端缓存. 前端缓存有3大种:如图,分为H ...