docker容器自动化部署(一)
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配置文件后遇到下面这个问题
解决方法:搞定在写。。。
最新文章
- 前端 js 发送验证码
- gulp插件(gulp-jmbuild),用于WEB前端构建
- MVC应用程序中管理(更新)上传的文件
- SVG 2D入门6 - 坐标与变换
- UIImage拉伸显示
- Rewrite Path in Asp.Net MVC Project
- 线性布局LinearLayout和相对布局RelativeLayout 之间的比较
- Java类加载器深入理解
- NYOJ 330 一个简单的数学
- 上位机与三菱FX3U通过FX-232-BD通信
- 视觉机器学习------KNN学习
- luogu5021 [NOIp2018]赛道修建 (二分答案+dp(贪心?))
- 【loj3044】【zjoi2019】Minimax
- dockerfile安装php遇到的坑
- nginx入门示例(二)
- 河工大玲珑校赛重现の rqy的键盘
- 注册Goole 账户 成功注册
- JAVA日期查询:季度、月份、星期等时间信息
- 微信小程序-实现分享(带参数)
- 【SoDiaoEditor电子病历编辑器更新啦】--谨以献给那些还在医疗行业奋斗的小伙伴们
热门文章
- [ABP] ASP.NET Zero 5.6.0 之 ASP.NET Zero Power Tools 上手日志
- vmware中centos6.7系统图形化安装Oracle显示乱码问题解决
- TeamCity 创建docker构建步骤
- MySQL表的操作
- Vue 组件&;组件之间的通信 之 父组件向子组件传值
- redis缓存数据库
- bzoj 3597 [Scoi2014] 方伯伯运椰子 - 费用流 - 二分答案
- 2018年-2019年第二学期第二周C#学习个人总结
- Android系统应用Mms之Sms短信发送流程(Mms应用部分)二
- javascript 之 面向对象【创建对象】