使用容器快速配置C/C++开发调试环境

开发 前端
因为容器的出现,让我们的环境搭建变得非常容易,而且我们再也不用担心因为某种原因导致环境破坏了,如果容器受损了,我们只需要重新启动一个新的容器即可。

对于很多新人来说,学习一门编程语言最难的部分可能就是环境的搭建,因为不同操作系统还有网络的原因,很多时候一个环境搭建就劝退了很多新人,但是随着容器化的出现,现在这种问题完全不存在了,因为环境的搭建可以通过容器分分钟完成,我们需要做的就是把配置文件复制过来,然后运行 docker 容器即可。

Docker 镜像的优点

过去我们开发应用都是在本地搭建各种环境,然后进行开发,最后部署到到服务器上,但是因为环境的不同,往往导致出现各种问题,并且调试起来也是相当的麻烦。

现在我们可以通过创建一个带有预安装依赖项和工具(如编译器、调试器等)的 docker 镜像,然后在镜像容器中进行开发调试,最后直接部署构建容器即可。

这个镜像将成为开发人员本地的服务器和 CI/CD 服务器,也就是说,将不会出现“它在我的机器上工作,但在 CI 上失败!”的问题。

图片

由于构建在容器内运行,它不受任何单个开发人员本地环境的环境变量、工具或设置的影响,这意味着环境变得孤立。任何开发人员使用的环境都是一样的。

理想情况下,Docker 镜像会被正确地标记一些有意义的版本名称;它允许用户通过从注册表中提取正确的映像来在环境之间跳转。即使镜像已经从注册中心移除,但是因为 docker 镜像是从 Dockerfiles 建立的,因此,我们总是可以从旧的 Dockerfile 重新构建映像。此外,因为我们随时通过 git 进行版本管理 Dockerfile,所以对于环境的构建永远都会非常的轻松。

Dockerfile 文件

c/c++的镜像配置非常简单,我们只需要从基础镜像 ubuntu 来进行配置即可,通过 apt-get install 安装 c 开发环境即可。如果需要一些数据库文件,我们可以添加到 dockerfile 文件中,当然,我们也可以通过 docker-compose 进行编排,添加一个 redis 的容器,然后网络关联彼此。

此外,我们还可以通过 gcc 这个镜像直接进行构建,可以不需要在安装 c 的开发环境。

当然,我们可以将编译构建命令写入到 Dockerfile 文件中,这样我们直接运行容器就可以编译生成可执行文件。

下面是具体的 Dockerfile 文件内容。

# Get the base Ubuntu image from Docker Hub
FROM ubuntu:latest
# Update apps on the base image
RUN apt-get -y update && apt-get install -y
# Install the Clang compiler
RUN apt-get -y install clang vim
# Specify the working directory
WORKDIR /usr/src/dockertest1
# Get the GCC preinstalled image from Docker Hub
FROM gcc:4.9
# Specify the working directory
WORKDIR /usr/src/dockertest1
docker build -t mygcc:local .
docker run -it -d -v /home/user/project:/usr/src/dockertest1 mygcc:local
/bin/bash

安装调试工具

目前的镜像只是包含编译工具,但是并没有调试工具,我们需要安装 gdb 工具来进行代码的调试,因此我们需要修改 Dockerfile 来引入 gdb 工具。

图片

# Get the base Ubuntu image from Docker Hub
FROM ubuntu:latest
# Update apps on the base image
RUN apt-get -y update && apt-get install -y
# Install the Clang compiler
RUN apt-get -y install clang vim gdb
# Specify the working directory
WORKDIR /usr/src/dockertest1

总结

因为容器的出现,让我们的环境搭建变得非常容易,而且我们再也不用担心因为某种原因导致环境破坏了,如果容器受损了,我们只需要重新启动一个新的容器即可。

通过文件的映射,我们可以在本地编辑直接编辑文件,然后映射到容器中,当然我们也可以直接在容器中修改,但是最好添加一个映射,这样,当我们的容器销毁的时候,我们的代码源文件还在本地保存。

镜像文件除了可以从官网进行下载,也可以自己去定义,特别是当你需要一个特有的环境的时候,你就可以选择构建自己的本地镜像。

此外,我们在 Dockerfile 中是可以执行命令的,比如一些依赖的安装,都可以在 Dockerfile 中指定运行安装。

另外,构建镜像只需要第一次从网络下载,之后就会运行本地缓存,并且容器运行起来非常的快,只需要几秒钟即可。

责任编辑:武晓燕 来源: 程序那些事儿
相关推荐

2024-01-24 13:45:21

Python开发操作系统

2011-01-14 12:53:45

Linux PPCEclipseC

2010-01-27 14:00:50

CC++运行环境

2010-01-18 15:19:41

Visual C++开

2010-01-14 16:54:02

C++开发环境

2010-01-15 09:58:38

C++ Builder

2010-08-10 14:17:32

思科路由器Assistant配置

2021-06-02 08:13:28

VscodeVisual stduC++

2010-01-20 11:02:42

C++开发环境

2009-06-05 14:54:09

EclipseC++环境搭建

2021-04-11 10:48:37

UbuntuC++Linux

2024-02-05 09:43:00

编程工具

2011-01-14 12:44:32

Linux PPCEclipseC

2014-04-15 11:27:50

C++开发者Objective-C核心语法

2010-01-26 15:51:06

C++变量

2010-11-24 10:35:40

Objective-C

2010-01-12 18:00:30

Visual C++

2010-01-28 10:33:10

C++开发程序

2009-11-12 10:05:09

Visual C++

2011-05-18 18:05:47

C#C++
点赞
收藏

51CTO技术栈公众号