docker入门(安装,常用功能使用整理)

docker 中 File Sharing 和Volumes 的区别 适用于开发环境中的快速文件同步和访问。Volumes适用于生产环境中的数据持久化和跨容器数据共享。选择哪种方式取决于你的具体需求和使用场景。 阅读详情

由于不同的project需要不同版本的环境,比如一个要opencv3, 一个opencv4, 都安装在主机上会很混乱,所以用docker来创建不同的环境。

现在想用的docker功能:
安装
创建一个ubuntu环境
在ubuntu环境中如何安装软件
怎么把安装好软件的环境保存下来,并上传到docker hub, 方便在其他机器上使用,或者系统崩了之后复原
如何一个容器开启多个终端
如何借用主机的显示屏显示docker中的图形化界面

现在一项一项来:
安装:
参照官网:https://docs.docker.com/engine/install/ubuntu/
这篇文章讲得比较详细:https://kalacloud.com/blog/how-to-install-and-use-docker-on-ubuntu/
为了方便设置,再装一个docker-desktop:
https://docs.docker.com/desktop/linux/install/
这个直接下载deb文件,双击文件夹安装即可(用dpkg -i我这里会报缺少依赖错误)

docker安装好后,每次使用docker命令前面都要加上sudo, 很是麻烦,
这时可添加自己的用户名进去,比如我的用户名是new_usr
那么sudo usermod -aG docker new_usr
再用一个su - new_usr,下次就不需要sudo了

创建一个ubuntu环境:
我们可以拿来主义,直接用别人已经搭好的ubuntu环境
先看看都有什么ubuntu环境
我这里想用一个带opencv3版本的,
所以搜索opencv3

$ docker search opencv3
NAME                                          DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
harshjv/opencv3                               Dockerized OpenCV3 with Python support, Open…   4                    [OK]
wlads/opencv3-contrib-python                  OpenCV 3.1.0 with Contrib and Python support…   2                    
tanmaniac/opencv3-cudagl                      Docker container with CUDA 9, OpenGL, and Op…   2                    [OK]
varunagrawal/opencv3                          Ubuntu 16.04 + OpenCV3 + Python3                2                    
stevenli1119/opencv3.4.12_cuda11.0_cudnn8.0   opencv3.4.12_cuda11.0_cudnn8.0                  1                    
evoup/opencv3.3.0                             opencv3.3.0 with python2.7 over ubuntu16.04     1                    [OK]
lalala/opencv3                                                                                1                    [OK]

带[OK]的是官方的,我这里选evoup/opencv3.3.0
所以把它拉到本地

docker pull evoup/opencv3.3.0

通过$ docker images可以看到这个image已经被拉下来了。

注意拉下来的是image(镜像),而我们run一个这样的镜像就是container(容器),一个镜像可以run多个容器。

在ubuntu环境中如何安装软件
和正常ubuntu系统里安装软件一样。
换源方法:

sed -i s@/archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list
sed -i s@/security.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list
apt-get clean
apt-get update

保存安装好的环境,上传到docker hub, 方便系统崩了以后复原

参考:https://kalacloud.com/blog/how-to-install-and-use-docker-on-ubuntu/

docker commit -m "What you did to the image" -a "Author Name" container_id repository/new_image_name

commit之后可以看到新生成的image, 假设ubuntu-ros是新的镜像

要推送镜像,请首先登录 Docker Hub。没有用户名的要先注册一个。

docker login -u docker-registry-username

输入账号对应的密码后,即可登录成功。

Login Succeeded
注意:如果你在 Docker 注册用户名与用于创建镜像的本地用户名不同,要在备注中记录 Docker 用户名:

docker tag kalacloud/ubuntu-nodejs kalacloud/ubuntu-nodejs

然后,我们就可以推送镜像到 Docker hub 上了,命令如下:

docker push docker-registry-username/docker-image-name

如果我们要把ubuntu-nodejs镜像推送到kalacloud的版本库,命令如下:

docker push kalacloud/ubuntu-nodejs

可以打开docker-desktop看到上传的image

如何一个容器打开多个终端:
像ros这种,在一个终端输入了roscore之后,要再打开其他终端才能运行node, 或者想开多个终端进行调试。
如果用docker run, 就会打开一个新的容器,涉及到容器间的通信问题,
如果想进同一个容器,要用docker exec

可通过docker ps查看当前容器的id, 假设这里container id是7896ef8f403f

docker exec -it 7896ef8f403f /bin/bash

如何借用主机的显示屏显示docker中的图形化界面
docker相当于一个没有显示屏的电脑,那么如何共享主机的画面来显示docker中的图形化界面呢,
比如显示ros中的小海龟。
参考:https://blog.youkuaiyun.com/qq_29935433/article/details/106194487?utm_source=app&app_version=5.5.0
只是需要注意一点,血泪的教训,
在主机上做了下面这一步之后,

#允许所有用户,包括docker,访问X11 的显示接口
sudo apt-get install x11-xserver-utils
xhost +
#输出为:access control disabled, clients can connect from any host

一定要新开一个终端打开docker,如果用之前已经打开的终端,环境的配置反映不过去,会出现could not connect to display :0的错误。

docker run -it --net=host -v /tmp/.X11-unix:/tmp/.X11-unix   -e DISPLAY=$DISPLAY --env="QT_X11_NO_MITSHM=1" 

如果报无法打开/tmp/.X11-unix,需要配置file shared的错误,
打开docker-desktop, 点右上角的setting符号,选Resource->File sharing, 然后把/tmp文件夹加进去。

再打开docker,运行rqt, rviz等,就能显示了。

共享USB
比如我要用一个usb摄像头,连到docker里面的程序,
程序启动时会提示报错,找不到/dev/video这个设备,
这时需要在docker run命令后面加一个选项

--device="/dev/video0"

同时还要加上--privileged,不然会没有访问摄像头的权限

docker与宿主机间的文件拷贝

宿主机的文件copy到docker:

docker cp <本地文件名> <container id>:<docker中的路径/文件名>

docker中的文件copy到宿主机:

docker cp <container id>:<docker中的路径/文件名> <本地文件名>
Mac系统Docker目录权限问题终极解决方案(含File Sharing配置详解) 本文深入解析Mac系统下Docker Desktop因虚拟机架构和File Sharing白名单机制导致的目录权限问题,特别是执行`docker compose up -d`时出现的“Permission denied”错误。文章提供了从诊断到解决的完整方案,包括配置File Sharing、调整路径、处理容器用户权限及部署Dify等复杂应用的最佳实践,帮助开发者彻底解决本地开发中的权限困扰。 阅读详情

相关推荐

关于在wsl上安装Docker方法整理

关于在wsl上安装Docker方法整理 某刚接触到Docker,windows刚好是专业版,便尝试在wsl上安装Docker 这里总结了一下我认为比较舒服的安装方法 但是由于能力有限,并没有配图 这个步骤我并没有在进行一遍,若有问题,请指出以便改正 参考来源 清华大学开源软件镜像站 Docker Community Edition 镜像使用帮助 在Linux的Windows子系统上(WSL)使用D...

ITNewerKing的博客 4479

Docker通过容器数据卷实现文件共享

dsadsad

weixin_42739916的博客 966

docker 常用命令整理

如果您觉得有用的话,记得给,写作不易啊^ _ ^。而且听说,实在白嫖的话,那欢迎常来啊!!!

杨杨杨~~的博客 927

解决docker desktop没有文件共享配置栏目

docker desktop 没有共享文件配置

分享才能进步 5025

docker常用命令整理

该命令来源于docker swarm init的打印信息,在管理节点上执行了docker init 命令后,会输出一个docker swarm join的命令,如果该命令忘记了,也可以在管理节点上执行。将mysql容器连接到网络xxl-job-network, 如果mysql是独立容器,在创建xxl-job-network网络时要添加–attachable 参数,否则网络不允许加入。升级xxl-job-admin服务,使用新的镜像xxl-job-admin:2.0。-t : 镜像名称和版本。

1437

Docker - 常用脚本整理,镜像加速,版本更新,安装,卸载

文章目录Docker - 常用脚本整理,镜像加速,版本更新,安装,卸载1、设置镜像加速2、docker 安装3、docker 卸载4、docker 进行版本更新 Docker - 常用脚本整理,镜像加速,版本更新,安装,卸载 1、设置镜像加速 sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { ...

简简单单Onlinezuozuo 4115

一篇文章上手docker(原理,部署,使用,坑)

(一)定义与介绍 前言:与虚拟机技术比较: 虚拟机(VM):在docker容器技术出现之前使用的是虚拟机技术,将一台物理机虚拟化为多台机器,可搭载不同的操作系统。但每一个虚拟机系统的消耗较大,都需安装一个完整的内核,存储空间占用也多。且系统镜像也不支持版本控制。 Docker容器技术:docker的一大特点就是简单轻便,物理机(宿主机)只需要安装docker环境,拉取image镜像,则可以通过该镜像创建一个或多个系统实例(Docker称为容器,容器间相互隔离互不影响),且image镜像与虚

(˶˚ ᗨ ˚˶)来康康我 2445

Crawl4AI实战:5分钟搞定电商价格监控爬虫(附Python代码)

本文详细介绍了如何利用开源AI网络爬虫框架Crawl4AI快速构建电商价格监控系统。通过Python实战代码,展示了从环境配置、智能内容提取到多平台适配、定时任务与数据可视化的完整流程,帮助运营人员和技术开发者高效实现自动化价格追踪与竞品分析。

weixin_29090917的博客 413

Docker-Compose安装部署及常用命令整理

Docker-Compose安装部署及常用命令整理 Docker-Compose是一个部署多个容器的简单但是非常必要的工具.安装Docker-Compose之前,请先安装 python-pip 一、安装 python-pip [root@workbench-test ~]# pip -V -bash: pip: command not found [root@workbench-test ~]# yum install python-pip [root@workbench-test ~]# yum

码王吴彦祖的博客 514

HDR视频技术之七:逆色调映射

HDR 技术说是继 4K 之后视频领域的又一次重大技术突破,不仅提高图像的动态范围,同时也提供了更宽的色域,并提升了画面在高光和暗部的细节信息,带给观看者更加真实的视觉体验。但作为 HDR 产业链的核心,内容短缺的问题仍然是 HDR 普及和成熟的重要限制因素。众多电视厂商将 HDR 技术作为其产品规划中的重要技术,主要是在硬件方面进行提升。而由于 HDR 内容制作对于设备要求较高,对采集、调色、显示等多方面都需要较高的质量要求,内容制作的复杂度和周期长等因素,导致了 HDR 内容的匮乏。

多媒体开发者 2422

西门子博图指令(定时器操作三)

西门子博图定时器中复位定时器功能指令介绍

yue008的博客 8871

docker安装及常用命令整理(实用篇)

–name=“Name” :指定容器名称,之后可以通过容器名称来操作容器; -e:设置容器的环境变量,这里设置的是时区; -v:将宿主机上的文件挂载到宿主机上,格式为:宿主机文件目录:容器文件目录; -d:表示容器以后台方式运行。 –network :指定网络 -P: 随机端口映射(大写P) -p:将宿主机和容器端口进行映射,指定端口映射,格式为:宿主机端口:容器端口,(小写p) ip:hostPort:containerPort ip::containerPort hostPort:containerPo

crayon 2193

深度学习之Pytorch---本人踩过的坑(报错总结)第十篇

深度学习之Pytorch安装时遇到的问题—本人踩过的坑(报错总结) 报错一:pip install torchvision 出现“由于目标计算机积极拒绝,无法连接”的问题 解决方案:找到自己浏览器的工具或选项,我的是火狐,具体解决方案如下图 然后找到桌面左下角,点击搜索internet,然后点击internet选项 最后回到Anaconda Prompt命令行输入pip install...

qq_41570307的博客 1914

docker、dockerfile、dockercompose安装与使用整理

Linux版本 CentOS 7。

tot_lbr的博客 1068

C#图表开发避坑指南:Chart控件的Series和Points属性详解

本文深入解析C#图表开发中Chart控件的Series和Points核心属性,提供避坑指南。详细阐述了Series的数据序列管理、Points的高效操作与空值处理,以及多Series与ChartArea的协同配置,帮助开发者避免常见错误,实现稳定、高性能的数据可视化应用。

weixin_29313239的博客 363

Linux V4L2驱动开发实战:手把手教你用I2C摄像头Sensor注册一个v4l2_subdev

本文详细解析了Linux V4L2驱动开发中I2C摄像头Sensor注册v4l2_subdev的全流程,包括初始化、操作集填充、异步匹配等关键环节。通过实战案例和代码示例,帮助开发者掌握V4L2子系统下的摄像头驱动开发技巧,提升嵌入式Linux系统开发能力。

weixin_30328063的博客 418

Docker系统知识整理(从安装到熟练操作)

一、Docker基础介绍     下图为Docker图标(是一个鲸鱼上面是集装箱) 1、我们为什么要使用Docker     当我们在工作中,一款产品从开发设计到上线运行,其中需要开发人员和运维工程师,开发人员负责代码编写,开发产品,运维工程师需要测试环境,产品部署。这之间就会有分歧。比如开发人员在自己的电脑上运行产...

IronmanJay 5706

一般无穷积分的收敛判别法

文章目录积分里的狄屎判别法证明阿贝尔判别法总结补充:级数中的狄屎和Abel 积分里的狄屎判别法 F(u)=∫auf(x)dx在[a,+∞)F(u)=\int_a^uf(x)dx在[a,+\infty)F(u)=∫au​f(x)dx在[a,+∞)有界 x→+∞时,g(x)单减→0x\to+\infty时,g(x)单减\rightarrow0x→+∞时,g(x)单减→0 ⇒\Rightarrow⇒ ...

universe_1207的博客 1万+

Docker 常用镜像整理

Docker 常用镜像

一位专注网络安全以及渗透的资深工程师 1372

【实战项目开发技术分享】ROS1.0、ROS 2.0和CyberRT开源通信框架对比

随着机器人和自动驾驶技术的飞速发展,开源通信框架在机器人、自动驾驶行业扮演着重要的角色。ROS1.0是一个广泛应用于机器人领域的开源框架,ROS 2.0是其改进版本,而CyberRT是Baidu Apollo自动驾驶平台的通信框架。ROS和ROS 2.0都注重灵活性和共享性,适用于各种机器人应用。CyberRT则专注于实时性和高性能,适用于自动驾驶等对实时性要求较高的场景。选择适合的框架取决于具体应用需求和开发者的偏好。

xiewf的博客 2万+

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Docker初级——介绍、安装和使用

项目需要使用Docker,所以自学了几天,仅提供给新手…写该博客一是希望能够帮助像我这样刚学习Docker的新人,二是加深自己的印象,如果忘了也可以再看看,有些片段是从其他博客、文档和书籍学习来的,但都是自己理解的,一些没有理解的就没有写出来,如有问题希望大家能够批评指正,由衷的表示感谢。主要运行环境:centos7 Docker的官网是:http://www.docker.com/1. Dock

Lone-路痴的博客 1万+

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

在 Windows 上安装和使用 Docker

你可以创建一个Dockerfile来定义自己的镜像。例如,创建一个简单的 Node.js 应用。创建项目文件夹创建Dockerfile文件COPY . .构建镜像运行容器通过以上步骤,你已经成功在 Windows 上安装并使用 Docker。Docker 提供了强大的容器化能力,使得开发和部署应用变得更加高效和灵活。继续探索 Docker 的更多功能,如 Docker Compose 和 Kubernetes,以便更好地管理和部署复杂应用。

私聊前往站内信:https://i.youkuaiyun.com/#/msg/chat/weixin_44976692 1万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Linux 系统离线安装 docker、docker compose

银河麒麟系统离线安装 docker、docker compose教程。

LiHuiChao 4390

docker常用命令规范整理

docker常用命令规范整理

ChengRuoFei的博客 2万+

Docker (compose、安装、常用命令整理、compose编排) -day06

docker compose 部署项目

javaxueba的博客 1838

Docker:部署入門 + 常用指令

Docker:部署入門 + 常用指令 文章目錄Docker:部署入門 + 常用指令簡介參考正文Docker 三元素Image 鏡像(映像檔)Container 容器堆疊Repository 倉庫基於 node 環境的簡單 Web 項目Install 安裝Windows / Mac 環境Ubuntu Linux 環境CentOS Linux 環境項目內容建立 Image 鏡像建立並運行 Container停止和銷毀Docker 常用指令基本信息Image 鏡像相關Container 容器相關結語 簡介 Doc

超悠閒的博客 539
上一篇: ubuntu 20.04 intel realsence D455 SDK安装
下一篇: leetcode 1048. Longest String Chain(最长的词链)
蓝羽飞鸟
博客等级 码龄8年 1万+粉丝 727原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝羽飞鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值