当前位置: 首页 > news >正文

ubuntu中使用docker

上一篇我已经下载了一个ubuntu:20.04的镜像;

1. 查看所有镜像

sudo docker images

2. 基于本地存在的ubuntu:20.04镜像创建一个容器,容器的名为cppubuntu-1。创建的时候就会启动容器。

sudo docker run -itd --name cppubuntu-1 ubuntu:20.04

结果出现长串的容器ID号,说明创建容器cppubuntu-1成功

3.  查看docker中有哪些容器

sudo docker ps -a

4. 停止运行容器。

sudo docker stop 2ffec3839753

5. 启动容器

sudo docker start 2ffec3839753

6. 通过容器ID号删除容器(注意只有停止运行的容器才能删除)

sudo docker rm 容器的ID号

7. 通过容器ID号进入容器内部

sudo docker exec -it 2ffec3839753 /bin/bash

8. 查看容器当前大小

sudo docker ps -s

9. 将宿主机上的文件拷贝到容器内部

sudo docker cp /home/lmz/workspace/opencv4_10_0_tools/opencv-4.10.0.zip 2ffec3839753:/home/lmz/tools
sudo docker cp ./cmake-3.31.6.tar.gz 2ffec3839753:/home/lmz/tools

----------------------------------------------------------------------------------------------------------------------

搭建c++开发环境

9. 安装gcc/g++

apt-get install build-essential

9.1 查看编译器版本

gcc --version
g++ --version
make --version

10 指定版本安装CMake

10.1 安装ssl库

sudo apt-get install libssl-dev

10.2 解压安装包

tar -zxvf cmake-3.31.6.tar.gz && cd cmake-3.31.6

10.3 查看配置文件

./bootstrap --help

10.4 配置(将cmake安装到指定的位置)

./bootstrap --prefix=/usr/local/cmake

10.5 编译cmake源文件(指定8个线程编译源文件)

make -j8

10.6 安装cmake

make install

10.7 将cmake的安装路径添加环境变量

打开 【vim /etc/profile】文件,在文件末尾输入一下内容:

# cmake env path 
export PATH=/usr/local/cmake/bin:$PATH

10.8 刷新环境变量

source /etc/profile

10.9 验证是否安装成功

切换到任意目录下执行如下命令,验证安装是否成功

cmake --version

安装成功的样子:

10.10 删除cmake的源码目录和源码压缩包(不影响已经安装好的cmake) ,免得占总docker容器空间。

rm -fr ./cmake-3.31.6
rm -rf ./cmake-3.31.6.tar.gz

 注意,如果你和我一样,虚拟机上的宿主机是ubuntu20.04。

在宿主机上安装docker。docker容器cppubuntu-1以ubuntu:20.04镜像文件创建的,并且在容器内部搭建开发环境,那么你关机虚拟机之后,容器会停止。cmake环境会找不到。
再次开机进入到容器后,需要重新刷新环境变量

source /etc/profile

可以不指定cmake的安装目录,会不需要这一步吧

**********************************************************************************************************

安装opencv--c++开发环境

http://www.xdnf.cn/news/920665.html

相关文章:

  • HBuilderX安装(uni-app和小程序开发)
  • Qt Quick Layout功能及架构
  • 篇章十 数据结构——Java对象的比较
  • 高频 PCB 技术发展趋势与应用解析
  • WaytoAGI东京大会开启AI全球化新对话:技术无国界,合作促创新
  • 功能安全实战系列09-英飞凌TC3xx LBIST开发详解
  • 开源分享|适合初创商家的餐饮系统,基于thinkphp8+element-plus
  • RXCDR_CFG参数选择
  • Rest-Assured API 测试:基于 Java 和 TestNG 的接口自动化测试
  • 8.库制作与原理
  • JS的 DOM 尺寸与位置属性
  • Faiss向量数据库全面解析:从原理到实战
  • Bootstrap Blazor中实现富文本框Editor组件的内容导出为docx格式的Word文档
  • 模式选择器中 编辑一些操作 和文件菜单一些操作
  • 本地主机部署开源企业云盘Seafile并实现外部访问
  • 二进制与十进制转换指南:深入理解数字系统转换
  • 【赵渝强老师】使用obd快速体验OceanBase
  • 分享两个日常办公软件:uTools、PixPin
  • C#报价系统陈列展示成本核算系统项目管理系统纸品非纸品报价软件
  • WebRTC通话原理与入门难度实战指南
  • C++--list的使用及其模拟实现
  • 【Python训练营打卡】day46 @浙大疏锦行
  • PCA笔记
  • rl_sar实现sim2real的整体思路
  • [文献阅读] Emo-VITS - An Emotion Speech Synthesis Method Based on VITS
  • Java优化:双重for循环
  • 浅谈 React Suspense
  • Java高级 | 【实验七】Springboot 过滤器和拦截器
  • 【深度学习-Day 24】过拟合与欠拟合:深入解析模型泛化能力的核心挑战
  • PG 分区表的缺陷