VisualStudio代码中用DOCKER容器开发C++

容器允许开发人员将应用程序与它所需的所有部分(如库和其他依赖项)打包,并将其作为一个映像发送出去。这对于C++跨平台开发尤其有用——您可以选择容器来定位与开发人员机器完全不同的操作系统上运行的平台。即使它们运行在同一个操作系统上,容器技术也确保应用程序将在任何其他机器上运行,而不考虑该机器可能具有的任何自定义设置,这些设置可能与用于编写和测试代码的机器不同。

null

码头工人 是一个非常流行的容器平台,通过使用容器可以轻松地创建、部署和运行应用程序,无论您是经验丰富的Docker开发人员还是刚刚起步的人,VisualStudio代码都非常支持在编辑器中使用Docker容器。

在这个博客文章中,我们将要介绍如何创建C++的DOCKER图像,启动DOCKER容器,并使用VisualStudio代码在容器中构建和运行C++“HeloWord”应用程序。

安装工具

首先,让我们获取您在本演练中需要的工具:

  1. 在您的计算机上安装Docker: 对于Mac , 对于Windows ,或 对于Linux。
  2. 安装Visual Studio代码: https://code.visualstudio.com/ .
  3. 扩展提供了对VS代码的Docker支持。要安装Docker扩展,请在VS代码中打开Extensions视图并搜索Docker以筛选结果。选择Microsoft 码头工人 扩展,单击Install,完成后重新加载VS代码。 图片[1]-VisualStudio代码中用DOCKER容器开发C++-yiteyi-C++库

获取我们的C++“HeloWord”应用程序准备好

让我们先研究一个C++“HeloWord”应用程序,我们将在这个演练之后在坞容器中构建并运行它。首先,在磁盘上创建一个新文件夹,并在VS代码中打开它。然后添加一个名为 测试.cpp 在文件夹中。VS代码窗口应如下所示:

图片[2]-VisualStudio代码中用DOCKER容器开发C++-yiteyi-C++库

现在让我们把以下内容放到 测试.cpp 文件。保存文件,我们就完成了。

#include <iostream>int main(int argc, char const *argv[]){  std::cout << "Hello Docker container!" << std::endl;  return 0;}

为C++开发建立码头工人形象

使用Docker,可以通过指定在Dockerfile中构建图像所需的分步命令来构建图像。Dockerfile只是一个包含构建指令的文本文件。

1.创建Dockerfile . VS代码Docker扩展提供了一个用于将Dockerfile添加到工作区的命令。我们在上一节中创建的文件夹在VS代码中打开后,在命令选项板(F1)中选择Command Docker:将Docker文件添加到工作区 产生 Dockerfile文件 , docker-compose.yml公司 , docker-compose.debug.yml文件 ,和 dockerignore先生 工作区类型的文件。 图片[3]-VisualStudio代码中用DOCKER容器开发C++-yiteyi-C++库

系统将提示您可以针对的平台或语言列表。在本演练中,让我们选择 其他 从列表中,它将给我们一个通用的DOCKFILE文件,我们可以从中构建C++特定的图像。 图片[4]-VisualStudio代码中用DOCKER容器开发C++-yiteyi-C++库

2.将生成指令添加到Dockerfile . 现在我们要编辑生成的 Dockerfile文件 以及如何构建Docker映像的说明。Docker扩展通过为Docker命令提供自动完成建议、代码段、QuickInfo和linting,为编辑Dockerfile提供了很好的体验。

在下面的部分中,我们将介绍如何用GCC和Clang作为编译器来构建C++开发环境。根据您选择的编译器,您只需要遵循两个部分(2.1或2.2)中的一个部分。

2.1为铿锵环境打造Docker形象

为了用CLAN编译器构建C++开发环境,让我们将以下内容复制到 Dockerfile文件 ,它在基本的Ubuntu映像上安装了Clang。

# Get the base Ubuntu image from Docker HubFROM ubuntu:latest# Update apps on the base imageRUN apt-get -y update && apt-get install -y# Install the Clang compilerRUN apt-get -y install clang# Copy the current folder which contains C++ source code to the Docker image under /usr/srcCOPY . /usr/src/dockertest1# Specify the working directoryWORKDIR /usr/src/dockertest1# Use Clang to compile the Test.cpp source fileRUN clang++ -o Test Test.cpp# Run the output program from the previous stepCMD ["./Test"]

2.1为GCC环境构建Docker映像

您可以按照上面类似的步骤来构建安装GCC而不是Clang的映像。或者,可以使用预安装了GCC的基本映像来简化步骤。让我们把以下内容复制到 Dockerfile文件 要使用GCC预装的映像,请执行以下操作:

# Get the GCC preinstalled image from Docker HubFROM gcc:4.9# Copy the current folder which contains C++ source code to the Docker image under /usr/srcCOPY . /usr/src/dockertest1# Specify the working directoryWORKDIR /usr/src/dockertest1# Use GCC to compile the Test.cpp source fileRUN g++ -o Test Test.cpp# Run the program output from the previous stepCMD ["./Test"]

3.打造Docker形象 . 现在我们在 Dockerfile文件 ,我们可以继续建立码头工人形象。 Docker:生成图像 是Docker扩展在命令调色板中提供的Docker命令之一。 图片[5]-VisualStudio代码中用DOCKER容器开发C++-yiteyi-C++库

调用Docker Build命令的另一种方法是右键单击 Dockerfile文件 在VS Code Explorer窗口中选择 塑造形象。

图片[6]-VisualStudio代码中用DOCKER容器开发C++-yiteyi-C++库

然后,您将得到一个提示,要求输入用于标记图像的名称和版本。

在构建过程中,您可以在VS Code Terminal窗口中看到 Dockerfile文件 正在由Docker执行。以下面的屏幕截图为例。 图片[7]-VisualStudio代码中用DOCKER容器开发C++-yiteyi-C++库

完成后,您可以在 图像 中的节点 码头工人 VS代码中的制表符。下面的屏幕截图显示了我们刚刚构建的图像出现在图像列表的顶部。

图片[8]-VisualStudio代码中用DOCKER容器开发C++-yiteyi-C++库

有一点需要注意的是,我们的基本形象“Ubuntu:latest“也在名单上。这意味着它可以被重用为构建其他映像的基础,只存储映像差异,与旋转多个完整的vm相比,这节省了巨大的磁盘空间。

运行Docker容器

现在我们有了一个图像,让我们试着运行它。有两种方法可以使用Docker扩展运行图像。 将执行图像并运行上面指定的默认CMD。在这种情况下,我们将 运行交互式 这将执行命令,但也给了我们一个交互式终端,我们可以使用它来查看正在运行的容器内发生了什么。 图片[9]-VisualStudio代码中用DOCKER容器开发C++-yiteyi-C++库

在D区ocker:Explorer window,我们看到刚刚启动的容器正在运行: 图片[10]-VisualStudio代码中用DOCKER容器开发C++-yiteyi-C++库

在终端窗口中,我们可以看到Dockerfile中指定的默认CMD,它将运行 试验 app(CMD[“.”/Test”]),已经由Docker执行,我们得到了预期的输出。 图片[11]-VisualStudio代码中用DOCKER容器开发C++-yiteyi-C++库

总结

在这篇博客文章中,我们一步一步地走过如何使用VS代码DOCKER扩展来构建DOCKER图像,启动DOCKER容器,并在容器中构建和运行C++程序。在以后的文章中,我们将介绍如何附加到容器中的进程并对其进行调试。 如果您对将来使用C++容器的主题有任何建议,请留下评论。

此外,如果您使用容器或使用C++进行云开发,我们将很乐意听到您的声音。如果你能花几分钟时间 C++云与集装箱发展概况 ,这将有助于我们在博客和产品改进的形式上关注对您重要的话题。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享