本文主要介绍了使用docker部署一个简单的c/c++程序的方法。通过示例代码进行了非常详细的介绍,对于大家的学习或者工作都有一定的参考价值。让我们和边肖一起学习。
首先,建立hello-world.cpp文件
程序代码如下:
#include<iostream> usingnamespacestd; intmain(){ cout<<"hello-world"<<endl; cout<<"myfirstdocker"<<endl; return0; }例如,我在我的home路径下建立了一个dockerfile/hello-world目录,并在其中创建了一个新的hello-world.cpp源文件。
二。编写DockerFile文件
文件和源文件在一个文件夹里,如上图所示,名为hello-dockerfile
。首先,给出文件的内容,然后逐一解释:
Dockerfile的命令可以借鉴我的另一个博客,https://www.jb51.net/article/197996.htm.
1、来自codenvy/cpp_gcc
FROM后面是该目标映像使用的基础映像。只能有一个基础映像。你可以去dockerHub通过dockersearch命令找到你想要的基础镜像。由于我们想要编译一个C++文件,我们可以使用g++或gcc作为基础映像。我们可以用g++搜索图像,如下图所示:
比如我用第二个,然后用dockerpull命令本地拉图像,如下图
所示
输入dockerimages命令查看所有本地图像,如下图所示:
比如我这里有两个镜像:一个是我刚下载的codenvy/cpp_gcc,另一个是ubuntu镜像。
这里可能有人会问,为什么不用ubuntu镜像呢?在我们的印象中,ubuntu自带g++和gcc编译器,这个镜像还是比较小的。我在这里解释一下:由于docker下的ubuntu镜像只保留了ubuntu的内核相关的东西,内核之外的东西都被尽量删除了,这就解释了我们安装ubuntu的镜像有近两个G,而docker的ubuntu镜像只有70M多,在这个Ubuntu镜像中,没有gcc和g++命令,甚至连sudo命令都没有,需要手动下载。
例如,我们使用这个ubuntu映像来生成一个容器:
然后检查g++的版本:
没有安装G++
。
sudo命令也没有。
所以我们需要用g++下载一个镜像,也可以自己手动安装在ubuntu镜像中,只是有点繁琐。
2、运行mkdir/home/user/myapp
RUN命令是构建容器时需要的命令,后面是我们常见的linux命令。
该命令用于在/home/user路径下创建一个新的myapp文件夹。
3、添加hello-world.CPP/home/user/myapp
ADD命令将主机下的文件复制到镜像,或者您可以使用COPY命令,但是ADD比COPY更强大
这个命令将在第一步中创建的新hello-world.cpp源文件复制到映像中的/home/user/myapp路径。
4、工作目录/家庭/用户/myapp
WORKDIR命令在创建容器时指定容器的默认工作目录。
该命令将镜像中的home/user/myapp路径作为默认工作路径。
5、运行g++hello-world.CPP-ohello
命令是用g++编译hello-world.cpp源文件,构建一个可执行文件hello。
6、CMD["。/hello"]
CMD是创建容器后运行的第一个命令。
该命令用于运行在上一步中构建的可执行文件hello。
三。创建镜像
使用命令:
dockerbuild-f./hello-dockerfile-tmy_hello_docker:v1.0.。/hello-Dockerfile是我们Dockerfile的位置
my_hello_docker是新创建的镜像的名称
v1.0是这个镜像的标签,比如这是第一版
镜像的过程如下图所示:
完成构建。让我们检查一下构建是否成功。通过dockerimages命令检查所有当前本地镜像:
这里我们看到多了一个镜像:my_hello_docker,这是我们刚刚创建的镜像,表示镜像构建成功。
四。通过此镜像运行容器
使用以下命令实例化一个容器
dockerrunmy_hello_docker:v1.0那么您将得到以下输出:
输出与我们编写的C++文件一致,说明docker成功部署了一个简单的c/c++程序,目的达到了。
关于如何使用docker部署一个简单的c/c++程序的文章到此结束。有关docker部署c/c++程序的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望你以后能支持我们!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)