Docker安装部署
一、docker使用入门,在ubuntu下安装docker:
配置repository
1.apt 更新:
sudo apt-get update
sudo apt-get install
ca-certificates
curl
gnupg
lsb-release
2.添加docker官方GPG key:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
3.执行以下命令设置stable repository:
echo
“deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu
$(lsb_release -cs) stable” | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
安装Docker Engine
1.更新apt, 安装必要的库。
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
docker 使用
安装完需要将当前用户加入docker组,否则使用docker指令都需要root权限,不同平台命令有出入,这里以ubuntu18.04为例:
sudo groupadd docker #添加docker用户组
sudo gpasswd -a $USER docker #将登陆用户加入到docker用户组中
newgrp docker #更新用户组
测试docker是否安装成功
docker run hello-world
运行上面指令,如果终端有如下打印,说明docker已经安装成功。
Unable to find image ‘hello-world:latest’ locally
latest: Pulling from library/hello-world
2db29710123e: Pull complete
Digest: sha256:97a379f4f88575512824f3b352bc03cd75e239179eea0fecc38e597b2209f49a
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:

  1. The Docker client contacted the Docker daemon.
  2. The Docker daemon pulled the “hello-world” image from the Docker Hub.
    (amd64)
  3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
  4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
docker image构建与使用
1.编写dockerfile,以构建ros2 foxy版本image的dockerfile.txt为例:

基于某个image构建,例如ubuntu的某个版本或者某个ros官方镜像

FROM ros:foxy-ros-base-focal

RUN sed -i “s/archive.ubuntu.com/mirrors.163.com/g” /etc/apt/sources.list

安装自己需要的环境

RUN apt-get update && apt-get install -y --no-install-recommends
ros-foxy-desktop
&& rm -rf /var/lib/apt/lists/*
2.build镜像,在dockerfile.txt同目录下运行:
docker build -t <your_image_name>: .
or:
docker build -f <your_dockerfile_name> -t <your_image_name>: .
3.查看本地镜像:
docker image ls
你将会看到如下输出:
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest feb5d9fea6a5 4 months ago 13.3kB
hello-world就是镜像文件,latest是标签。
4.运行container:
docker run -it --rm
–user=$(id -u U S E R ) : USER): USER):(id -g KaTeX parse error: Undefined control sequence: \ at position 7: USER) \̲ ̲ --workdir="/h…USER"
–volume="/home/ U S E R : / h o m e / USER:/home/ USER:/home/USER"
–volume="/etc/group:/etc/group:ro"
–volume="/etc/passwd:/etc/passwd:ro"
–volume="/etc/shadow:/etc/shadow:ro"
–volume="/etc/sudoers.d:/etc/sudoers.d:ro"
–net=host
–gpus all
-e DISPLAY
-e QT_X11_NO_MITSHM=1
-e XAUTHORITY=/tmp/.docker.xauth
-v /tmp/.docker.xauth:/tmp/.docker.xauth
-v /tmp/.X11-unix:/tmp/.X11-unix
<your_image_name>:
以上前7项为挂载本机用户为container中默认用户运行,否则将以root用户进入container,不推荐使用root用户进行开发操作; --net=host为将本机网络映射到container中;接着6项为使用显卡和显示相关;–gpus all这一行报错的话题,可以去掉。更多使用方法参考官方文档。
使用VSCODE一般需要一个固定的长期开发环境,因此需要container在运行完成后不会自己删除,启动时要去掉–rm,运行完成后,就已经有了一个ros2环境的container。
5.(optional)自动加载ROS环境变量 :
使用ROS前需要加载ROS环境变量,使用docker时可以用如下方法实现自动加载:
将source /opt/ros/foxy/setup.bash写入当前系统用户文件夹下.bashrc的末尾,也是ROS安装完成后的官方推荐操作,但只有使用上文命令脚本运行container才会生效,因此该脚本会加载当前系统用户作为container的默认用户,也会同时执行.bashrc中的命令。
6.从docker hub拉取镜像:
当我们在本地主机上使用一个不存在的镜像时 Docker 就会自动下载这个镜像。如果我们想预先下载这个镜像,我们可以使用 docker pull 命令来下载它。
docker pull ubuntu:18.04
7.查找镜像:
我们可以从 Docker Hub 网站来搜索镜像,Docker Hub 网址为: https://hub.docker.com/
8.删除镜像:
镜像删除使用 docker rmi 命令,比如我们删除 hello-world 镜像:
docker rmi hello-world

二、使用vscode和docker进行开发
vscode安装插件

  1. C/C++ for Visual Studio Code
  2. C++ Intellisense
  3. ROS
  4. CMake
  5. Remote
  6. clangd
    以上Remote插件可以attach到开启的container,方便在container环境下写代码。
    clangd配置
    vscode自带的intellisense用于代码补全时问题颇多,尤其在docker环境下,因此建议换成clangd进行开发,使用clangd需要额外再进行一些配置,步骤如下:
    1.在插件中搜索clangd并安装,安装完成右下角会自动提示安装clangd server,点yes即可。
    2.在ROS环境中将整个工程编译一次,需要增加"-DCMAKE_EXPORT_COMPILE_COMMANDS=1"指令,以ros2 foxy为例:
    colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
    需要保证编译成功完成,否则部分文件的编译命令无法生成,导致clangd找不到这个文件的索引,非ROS环境类似。
    3.重启VSCODE或者clangd server。

三、Docker 本地导入镜像/保存镜像/载入镜像/删除镜像

例:

  1. cat ubuntu1804_arm_ins.tar | docker import - ubuntu18.04:arm-ins-v1.1

2.docker load --input ubuntu1804_arm_ins.tar

3.docker run -it --rm --user=$(id -u U S E R ) : USER): USER):(id -g U S E R ) − − w o r k d i r = " / h o m e / USER) --workdir="/home/ USER)−−workdir="/home/USER" --volume="/home/ U S E R : / h o m e / USER:/home/ USER:/home/USER" --volume="/etc/group:/etc/group:ro" --volume="/etc/passwd:/etc/passwd:ro" --volume="/etc/shadow:/etc/shadow:ro" --volume="/etc/sudoers.d:/etc/sudoers.d:ro" --net=host -e DISPLAY -e QT_X11_NO_MITSHM=1 -e XAUTHORITY=/tmp/.docker.xauth -v /tmp/.docker.xauth:/tmp/.docker.xauth -v /tmp/.X11-unix:/tmp/.X11-unix ubuntu18.04:arm-ins-v1.1

谢谢 提供帮助!
自测能够使用,在此地记录!
https://www.cnblogs.com/linjiqin/p/8604756.html

docker 安装及部署相关推荐

  1. Docker 安装和部署

    Docker 安装和部署 Docker 简介 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟 ...

  2. Docker安装及部署

    Docker安装及部署 一.Docker安装 二.安装Centos容器并安装Jdk 三.Docker安装部署Redis 四.Docker部署Nginx 五.Docker安装Mysql 持续记录.... ...

  3. kubernetes+docker安装及部署服务

    kubernetes+docker安装及部署服务 参考文章: kubernetes详细介绍 kubernetes官网 1.安装docker(安装过的跳过此步骤) https://blog.csdn.n ...

  4. docker安装以及部署springboot项目

    一.docker安装 1.安装 Docker Engine-Community 安装最新版本的 Docker Engine-Community 和 containerd,或者转到下一步安装特定版本: ...

  5. 【docker安装】docker安装与部署

    docker在centos中的安装与部署 yum list docker-ce --showduplicates | sort -r yum update 3.配置docker镜像源 tee /etc ...

  6. docker安装以及部署

    docker安装 1.安装docker (1)卸载以前安装的Docker容器 sudo yum remove docker \ docker-client \ docker-client-latest ...

  7. Docker安装及部署(一)

    2013年发布至今, Docker 一直广受瞩目,被认为可能会改变软件行业. 但是,许多人并不清楚 Docker 到底是什么,要解决什么问题,好处又在哪里?今天就来详细解释,帮助大家理解它,还带有简单 ...

  8. Docker安装与部署MySQL等,迁移备份与Dockerfile和私有仓库

    1.Docker简介 1.1 什么是虚拟化 一种资源管理技术,实际用处一般用来解决高性能的物理硬件产能过剩和老的旧的硬件产能过低的重组重用,透明化底层物理硬件,从而最大化的利用物理硬件,对资源充分利用 ...

  9. docker安装、部署docker反向代理

    1.1 docker介绍 https://www.cnblogs.com/xiaonq/p/10241045.html#i4 1. 什么是docker Docker 是应用最广泛的开源容器引擎,让开发 ...

最新文章

  1. 类选择器和所作用的标签一起写为什么不起作用? - CSDN博客
  2. PTA团体程序设计天梯赛-L2-024 部落
  3. 这些年书读太少,没有读进去
  4. 是先设计mysql表再进行php代码_PHP与RBAC设计思路,数据表设计与源码讲解
  5. python 堆_面试再问你什么是堆和栈,你就把这篇文章甩给他
  6. 学习了Redis的五大数据类型,其底层实现你了解吗?
  7. 【Python】CentOs7 Python3安装Openssl以及解决ssl问题
  8. Best MSI to EXE Convert tool
  9. Numpy系列(七)求解线性方程组、计算逆矩阵求解线性方程组
  10. 听说你是程序员,请问你知道龙书、虎书、鲸书、魔法书、犀牛书...指的是哪些书么?...
  11. c语言模拟扫雷小游戏
  12. 前端实现录音功能插件recorder.js
  13. Java中的异常分类[乐乐独记]
  14. 光耦的种类、选型和分析
  15. 初识ecshop小京东(1)——认识路由
  16. 实体门店一定要做私域运营吗?哪些行业适合做私域流量运营?
  17. 看了 Google 大神 Jeff Dean 的传说,我拜服了~
  18. 本地连接-IP和DNS设置
  19. Could not GET 'http://jcenter.bintray.com/com/github/dcendents/android-maven-gradle-plugin/2.1/andro
  20. Cognos BI交流群共享资料整理

热门文章

  1. SSM框架实现插入图片显示图片到JSP界面
  2. 图神经网络的图网络学习(上)
  3. 2023首届大学生算法大赛——补题
  4. 从零开始学微信小程序开发:1
  5. 京东快递开接外单偏平台商户
  6. Python 实现 GIF 动态图片分解 , 多帧动态图分解成多张静态图片
  7. 51Nod-1526-分配笔名
  8. 05_解决mac百度网盘下载速度慢问题
  9. C语言中-条件编译#ifdef的妙用详解_透彻
  10. pccs色卡_PCCS色卡RGBCMYK對照表.PDF