搭建ubuntu容器内C/C++开发调试环境

一、创建容器

为了让容器内的调试器(gdb、lldb)能够正常调试,在创建容器时需要添加参数:

podman添加参数:--cap-add=SYS_PTRACE,docker添加参数--cap-add=SYS_PTRACE --security-opt seccomp=unconfined

否则报错:Error disabling address space randomization: Operation not permitted

如果是使用podman则使用命令:

sudo podman run -itd -p 2023:22 --name ubuntu --cap-add=SYS_PTRACE docker.io/library/ubuntu

如果是docker则使用命令:

sudo docker run -itd -p 2023:22 --name ubuntu --cap-add=SYS_PTRACE --security-opt seccomp=unconfined docker.io/library/ubuntu

名字可以随便取,将主机某个端口映射到容器中的22端口,方便远程SSH,这里为2023。

使用sudo podman attach <容器ID>连接到创建的容器,就进入Shell控制台了。

二、安装软件

1、安装openssh-server

ubuntu在安装软件前需要使用apt update进行源更新。然后使用apt install openssh-server安装openssh-server方便远程SSH连接。

apt update
apt install openssh-server
mkdir /run/sshd
/usr/sbin/sshd&

安装好openssh-server需要先创建/run/sshd目录才能启动,否则报错:

Missing privilege separation directory: /run/sshd

由于ubuntu默认情况是不允许使用root用户远程连接的,所以需要添加一个账号然后使用这个账号进行远程SSH连接,比如使用adduser admin添加一个admin账号。

# adduser admin
Adding user `admin' ...
Adding new group `admin' (1000) ...
Adding new user `admin' (1000) with group `admin' ...
Creating home directory `/home/admin' ...
Copying files from `/etc/skel' ...
New password: 
Retype new password: 
passwd: password updated successfully
Changing the user information for admin
Enter the new value, or press ENTER for the defaultFull Name []: Room Number []: Work Phone []: Home Phone []: Other []: 
Is the information correct? [Y/n] y

2、安装其它必要软件

apt install sudo net-tools vim
apt install gcc g++ gdb

sudo方便远程连接时,可以使用root权限;net-tools主要是可以使用netstat查看监听端口。

如果要安装clang和lldb工具链,使用:

sudo apt install clang-15 lldb-15
sudo ln -s /usr/bin/clang-15 /usr/bin/clang
sudo ln -s /usr/bin/clang++-15 /usr/bin/clang++
sudo ln -s /usr/bin/lldb-15 /usr/bin/lldb
sudo ln -s /usr/lib/llvm-15/bin/lldb-server-15.0.7 /usr/bin/

三、配置

1.让openssh-server启动时自动运行

前面是使用/usr/sbin/sshd&来直接运行openssh-server的,但是每次重启容器后,都需要手动执行这条命令才能远程SSH连接,很麻烦,可以让它在启动时自动运行。

之前笔者的博文配置与管理Ubuntu 21.10中让容器启动即运行SSH服务一节中有介绍CentOS系统如何在容器启动时就运行SSH服务,但是Ubuntu有点不一样,它不会执行/etc/profile.d/下的脚本。这里使用了简单粗暴的方法,直接修改root用户的.bashrc

如果是非root用户,使用sudo -i则会进入root用户,然后在root用户目录编辑.bashrc,在最后添加:

if [[ `ps -e |grep sshd |grep -v "grep" |wc -l` == 0 ]]
then/usr/sbin/sshd &
fi

2.修改locale以显示中文

由于ubuntu默认的locale是POSIX不能正常显示中文,需要修改为UTF-8字符编码才能显示中文,可以安装中文zh_CN.UTF-8,如果只是显示中文也可以使用自带的C.utf8

admin@dce3e311d883:~$ locale 
LANG=
LANGUAGE=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=

使用locale -a查看所有可用的locale

locale -a
C
C.utf8
POSIX

为了让默认的locale改为C.utf8,添加或者修改/etc/default/locale,ubuntu容器默认是没有这个文件的。sudo vim /etc/default/locale新建:

LC_ALL="C.utf8"
LANG="C.utf8"

四、SSH远程连接

远程连接工具比较多,这里介绍一下 Win10自带的OpenSSH工具。

如何安装可以参阅官网使用 Windows 设置来安装 OpenSSH

安装好后的OpenSSH在C:\Windows\System32\OpenSSH目录下。

格式:

ssh -p 端口 用户名@IP
在这里插入图片描述

注意:如果之前创建并连接过相同配置的容器,即IP、账号、端口一致的容器,然后重新创建了,则可能会报错误Host key verification failed

ssh -p 2023 admin@IP
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:4jOJDemqtgvc864kff6h/Fpp3F+6DuGNRsOBkV9kB+U.
Please contact your system administrator.
Add correct host key in C:\\Users\\admin/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in C:\\Users\\admin/.ssh/known_hosts:1
ECDSA host key for [IP]:2023 has changed and you have requested strict checking.
Host key verification failed.

此时只需要根据提示,打开C:\Users\admin/.ssh/known_hosts文件,找到[IP]:端口相匹配的一行记录删除即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/354124.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

不知道图片变漫画怎么弄?来跟我学这几个简单的方法

我想问经常换头像的朋友一个问题&#xff0c;你们有用过自己的漫画脸当头像吗&#xff1f;如果我们把自己的头像做成漫画脸不仅不容易和别人撞头像而且更加能贴合我们自身的形象。那你们知道漫画脸怎么拍吗&#xff1f;今天我来给大家分享几个漫画脸制作都的方法。有兴趣的朋友…

适合剪辑新手的几个网站

现在越来越多的人喜欢剪辑视频了&#xff0c;现在我就推荐几个不错的适合剪辑新手的网站。 1.Videvo 这是一个提供高清或 4K 音频和视频的网站。它的视频分类详细&#xff0c;主要的分类有镜头和图文。 我更喜欢它的镜头类型下的视频&#xff0c;每一帧都很好看&#xff01; …

古画会唱歌/图片说话对口型视频教程+工具素材

正文: 一张人物古画对口型&#xff0c;配上一段搞笑的配音&#xff0c;轻轻松松就能获得十几万的点赞&#xff0c;这个适合小白去操作&#xff0c;不仅好玩有趣涨粉还特别快。 视频演示放到压缩包了&#xff0c;有兴趣的自己去看吧。 教程工具素材 全部打包: wwreh.lanzoui…

短视频剪辑的小技巧分享,助你剪出令人印象深刻的片段,吸粉引流

短视频剪辑的小技巧分享&#xff0c;助你剪出令人印象深刻的片段&#xff0c;吸粉引流 短视频剪辑说难也难&#xff0c;但是说简单其实也简单&#xff0c;毕竟只要认真学习&#xff0c;大概几天就可以基本掌握短视频剪辑的流程&#xff0c;只是如果想要剪辑出来可以吸粉引流的…

全网最简单的网络图画法,小白福音包学包会

全网最简单的网络图画法&#xff0c;小白福音包学包会 徐锐&#xff08;助理研究员&#xff09;&#xff0c;广东省生态环境技术研究所&#xff0c;土壤微生物与宏基因组方向 版本1.0.1&#xff0c;更新日期&#xff1a;2020年6月23日 本项目永久地址&#xff1a;https://githu…

Python程序设计基础:标识符、变量与赋值、输入输出

文章目录 一、标识符二、变量与赋值三、输入输出 一、标识符 Python对每个标识符的命名存在要求&#xff1a; 1、每个标识符必须以字母或下划线“_”开头&#xff0c;后跟字母、数字或下划线的任意序列。根据这个规则&#xff0c;以下都是Python中的合法名称&#xff1a;a&…

光纤熔接之盘纤技巧(首先你得有一把好切割刀)

光纤熔接不可忽视的一个步骤——【盘纤】。科学的盘纤方法&#xff0c;可使光纤布局合理、附加损耗小、经得住时间和恶劣环境的考验&#xff0c;可避免挤压造成的断纤现象。 很多自称干了10多年的光纤熔接师傅盘起来的光纤“惨不忍睹” 整个光纤熔接是一门细致的手艺活。光纤熔…

第三篇——胡咧咧之动漫素材如何剪辑,只拼接可以吗?

第三篇——胡咧咧之动漫素材如何剪辑&#xff0c;只拼接可以吗&#xff1f; 上一篇告诉大家如何下载素材了&#xff0c;现在大家电脑里都有素材了&#xff0c;可是&#xff0c;不能直接发布到抖音里&#xff0c;否则&#xff0c;就是版权侵权&#xff0c;违规&#xff0c;轻则…

爬了1000张清纯妹子私房照,我流鼻血了...

闲扯几句 大家好&#xff0c;我是你们的老朋友青戈&#xff0c;之前分享了一篇Java爬虫的入门实战教程&#xff0c;收获了不少赞&#xff0c;看来大家伙对爬虫的热情度还是蛮高的哈。既然大家都这么想学爬虫&#xff0c;那今天就安排点刺激的。那你要非问我有多刺激&#xff0…

SpringBootWeb案例-1(上: 来源黑马程序员)

SpringBootWeb案例 完成后的成品效果展示&#xff1a; 主要内容如下&#xff1a; 准备工作部门管理 1. 准备工作 我们先从"需求"和"环境搭建"开始入手。 1.1 需求&环境搭建 1.1.1 需求说明 1、部门管理 部门管理功能开发包括&#xff1a; 查询部…

高校学生公寓数字化安全用电管理系统解决方案

摘要 本文针对高校学生公寓用电特点,从安全用电角度提出了一套集用电管理、计量、恶性负载智能识别控制、实时跟踪检测等功能于一体的数字化安全用电管理系统技术解决方案———学生公寓智能控电管理系统。 关键词:公寓恶性负载安全用电智能系统 0、引言 近年来,为了响应国…

短视频矩阵源码系统打包.源码

Masayl是一款基于区块链技术的去中心化应用程序开发平台&#xff0c;可帮助开发者快速、便捷地创建去中心化应用程序。Masayl拥有丰富的API和SDK&#xff0c;为开发者们提供了支持。此外&#xff0c;Masayl还采用了高效的智能合约技术&#xff0c;确保应用程序的稳定、安全和高…

【数据结构与算法分析】反转链表与顺序表(内含源码,思路清晰)

文章目录 介绍实现顺序表反转实现链表反转附链表的一些中间函数 介绍 顺序表和链表都是数据结构中常见的线性表。它们的主要区别在于内存管理方式不同。   顺序表&#xff08;Array&#xff09;是由一系列元素按照一定顺序依次排列而成&#xff0c;它使用连续的内存空间存储数…

怎样关闭百度云开机启动服务器,教你解决win10系统设置百度云管家开机自动启动的设置办法...

许多win10系统用户在工作中经常会遇到对win10系统设置百度云管家开机自动启动的设置方法&#xff0c;想必大家都遇到过需要对win10系统设置百度云管家开机自动启动进行设置的情况吧&#xff0c;那么应该怎么设置win10系统设置百度云管家开机自动启动的操作方法非常简单&#xf…

Windows电脑怎么解决百度云管家无法删除也无法打开的问题(臭流氓软件)

实习第一天有的东西需要从百度云上面下载&#xff0c;谁知道直接先给我下载了一个百度云管家&#xff0c;我&#xff1a;&#xff1f;&#xff1f;&#xff1f;&#xff1f; 然后发现还删除不了&#xff0c;哼&#xff0c;难不倒我。 直接打开任务管理器&#xff0c;找了很久…

如何清除百度云管家计算机图标,Win10此电脑中多了个百度云管家图标如何清除...

百度云管家是百度云的客户端&#xff0c;一些用户为了更加方便地上传下载文件&#xff0c;都会在电脑中安装百度云管家。但是最近有Win10用户反馈&#xff0c;安装了百度云管家后&#xff0c;此电脑中就多了“百度云管家”的图标&#xff0c;怎么删也删不掉&#xff0c;这该怎么…

百度云管家在计算机上删除,百度云管家盘符删不掉怎么办?删除百度云管家盘符的方法...

选择很多的人都喜欢使用百度云盘来进行文件或者的资料的存放&#xff0c;为的就是在其它的地方也能将文件或资料实施开启&#xff0c;就不用再使用硬盘或者是U盘来进行携带&#xff0c;这样不仅减少了很多不必要的麻烦&#xff0c;而且还简单轻松。然我们在使用百度云盘的时候&…

百度云管家下载速度也作假

以前写过一篇&#xff0c;百度云上传流量造假的&#xff1a;点这里 现在根据目前的检测发现&#xff1a;百度云在下载的时候速度造假&#xff0c;大文件测试的结果是&#xff1a;下载造假20%&#xff0c;即用100M的流量实际上只能下载80M的文件 对于按流量计费的小伙伴们&…

百度云管家开机启动如何取消

http://jingyan.baidu.com/article/c85b7a6404edde003bac95ce.html 度云管家在下载方面越来越有吸引力&#xff0c;但是对于大多数朋友来说&#xff0c;并没有需求到每次开机都要使用百度云管家的地步。那么怎么取消百度云管家的开机启动呢&#xff1f; 工具/原料 百度云管家 方…

百度云管家怎么用

百度云管家是百度公司旗下的一款软件&#xff0c;它主要被应用鱼下载功能上&#xff0c;支持断点续传&#xff0c;那么如何用呢。 方法/步骤 1 先从百度网站中搜索这个软件安装。点击推荐安装。 2 安装完毕后&#xff0c;点击体验下。这里提示输入百度HI的 ID&#xff0c; 3 这…