一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

云服務器|WEB服務器|FTP服務器|郵件服務器|虛擬主機|服務器安全|DNS服務器|服務器知識|Nginx|IIS|Tomcat|

服務器之家 - 服務器技術 - 服務器知識 - 使用docker部署一個簡單的c/c++程序的方法

使用docker部署一個簡單的c/c++程序的方法

2021-05-12 19:22EricLee23 服務器知識

這篇文章主要介紹了使用docker部署一個簡單的c/c++程序的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

一、首先建立一個 hello-world.cpp 文件

程序代碼如下:

?
1
2
3
4
5
6
7
8
#include <iostream>
using namespace std;
 
int main () {
    cout << "hello-world" << endl;
    cout << "my first docker" << endl;
    return 0;
}

例如我是在我的home路徑下建立一個DockerFile/hello-world目錄,里面新建一個hello-world.cpp源文件。

使用docker部署一個簡單的c/c++程序的方法

二、編寫DockerFile文件

該文件和源文件在一個文件夾下,如上圖所示,名為hello-dockerfile
先給出文件內容,然后逐條解釋:

?
1
2
3
4
5
6
7
8
9
10
11
FROM codenvy/cpp_gcc
 
RUN mkdir /home/user/myapp
 
ADD hello-world.cpp /home/user/myapp
 
WORKDIR /home/user/myapp
 
RUN g++ hello-world.cpp -o hello
 
CMD ["./hello"]

Dockerfile的命令可以借鑒我的另一篇博客http://m.ythuaji.com.cn/article/163145.html

1、FROM codenvy/cpp_gcc

FROM是后面是該目標鏡像使用的基礎鏡像,基礎鏡像有且只能有一個,鏡像可以通過docker search 命令去docker Hub上去找自己想要的基礎鏡像。由于我們想要編譯一個C++文件,我們可以使用帶有g++或者gcc的鏡像作為基礎鏡像,我們可以搜索一下帶有g++的鏡像,如下圖所示:

使用docker部署一個簡單的c/c++程序的方法

例如我使用的是第二個,然后通過docker pull命令將該鏡像pull到本地,如下圖所示

使用docker部署一個簡單的c/c++程序的方法

輸入docker images 命令可以查看本地的所有鏡像,如下圖所示:

使用docker部署一個簡單的c/c++程序的方法

例如我這里有兩個鏡像:一個剛才下載的codenvy/cpp_gcc,還有一個ubuntu鏡像。

這里可能有人會有疑問,為什么不直接使用ubuntu鏡像呢?在我們的印象中ubuntu自帶了g++和gcc編譯器,而且這個鏡像還比較小。這里我來說明一下:由于docker下的ubuntu鏡像只保留了ubuntu的內核相關的東西,核心以外的東西都盡可能被刪除了,這也就解釋了平時我們安裝ubuntu的鏡像有將近兩個G,而docker的ubuntu鏡像只有七十多M。在這個Ubuntu鏡像里是沒有gcc和g++ 命令的,連sudo命令都沒有,都需要手動下載配置

例如我們使用該ubuntu鏡像生成一個容器:

使用docker部署一個簡單的c/c++程序的方法

然后查看g++的版本:

使用docker部署一個簡單的c/c++程序的方法

發現并沒有安裝g++

使用docker部署一個簡單的c/c++程序的方法

sudo命令也沒有。
所以我們需要下載一個帶有g++的鏡像,也可以自己在ubuntu鏡像里手動安裝,不過就是有點費事。

2、RUN mkdir /home/user/myapp

RUN命令是容器構建時需要的命令,后面帶有的就是我們常見的linux命令。

該命令就是在 /home/user 路徑下新建一個 myapp 文件夾

3、ADD hello-world.cpp /home/user/myapp

ADD命令是將宿主機下的文件拷貝到鏡像,也可以用COPY命令,不過ADDCOPY的功能更強大,ADD帶有解壓縮的功能。

該命令就是將第一步新建的 hello-world.cpp 源文件拷貝到鏡像中的/home/user/myapp 路徑下。

4、WORKDIR /home/user/myapp

WORKDIR命令就是指定創建容器時,容器的默認工作目錄。

該命令將鏡像中的 home/user/myapp 路徑作為默認工作路徑。

5、RUN g++ hello-world.cpp -o hello

該命令是使用g++編譯 hello-world.cpp 源文件,構建一個可執行文件hello

6、CMD ["./hello"]

CMD是指定容器創建完成后第一個運行的命令。

該命令是運行上一步構建的可執行文件 hello

三、創建鏡像

使用命令:

?
1
docker build -f ./hello-dockerfile -t my_hello_docker:v1.0 .

./hello-dockerfile是我們Dockerfile的所在位置
my_hello_docker是新建的鏡像的名字
v1.0是該鏡像的標簽,例如這是第一版

構建鏡像的過程如下圖所示:

使用docker部署一個簡單的c/c++程序的方法

構建完成我們查看是否成功構建,通過docker images命令查看當前本地的所有鏡像:

使用docker部署一個簡單的c/c++程序的方法

在這里我們看到多了一個鏡像:my_hello_docker,就是我們剛才創建的那個鏡像,說明鏡像構建成功。

四、通過該鏡像運行一個容器

通過以下命令實例化一個容器

?
1
docker run my_hello_docker:v1.0

然后會得到下面的輸出:

使用docker部署一個簡單的c/c++程序的方法

輸出與我們編寫的C++文件一致,說明成功利用docker部署一個簡單的c/c++程序,達到了目的。

到此這篇關于使用docker部署一個簡單的c/c++程序的方法的文章就介紹到這了,更多相關docker部署c/c++程序內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/weixin_43142797/article/details/105895167

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日韩精选 | 国产欧美va欧美va香蕉在线观 | 女人用粗大自熨喷水在线视频 | 万域之王动漫在线观看全集免费播放 | 免费在线观看伦理片 | 国产麻豆传媒在线观看 | 国产成人激情 | 精品91自产拍在线观看99re | 男女男精品视频免费观看 | 国产欧美日韩在线不卡第一页 | 舔穴吸奶| 日本高清免费不卡在线播放 | 校园刺激全黄H全肉细节文 校草让我脱了内裤给全班看 | 97色伦图片7778久久 | 四虎网址| 亚洲26uuuu最新地址 | 国产成人理在线观看视频 | 免费yjsp妖精com | 成人免费国产欧美日韩你懂的 | 甜蜜惩罚小说 | 四虎在线成人免费网站 | 精品欧美小视频在线观看 | 国产精品午夜性视频网站 | 乌克兰13一14娇小 | 精品小视频在线观看 | 亚洲成人一区在线 | 性xxxx中国老妇506070 | 性欧美videosex18嫩 | 国产成人一区二区三区视频免费蜜 | 激情视频在线播放 | 91久久精品视频 | 福利视频一区青娱 | 欧美人与牲动交xxx 欧美人妖另类性hd 欧美人人干 | 久久精品成人免费看 | caoporn国产| 国产成人综合久久精品红 | 6080欧美一区二区三区四区 | 亚洲国产成人精品激情 | 色综合天天综合网站中国 | 日韩免费在线视频观看 | 欧美free激情野战hd |