使用docker部署乙個簡單的c c 程式的方法

2022-09-24 11:24:12 字數 2316 閱讀 3092

一、首先建立乙個 hello-world.cpp 檔案

程式**如下:

#include

using namespace std;

int main ()

例如我是在我的home路徑下建立乙個dockerfile/hello-world目錄,裡面新建乙個hello-world.cpp原始檔。

二、編寫dockerfile檔案

該檔案和原始檔在乙個資料夾下,如上圖所示,名為hello-dockerfile

先給出檔案內容,然後逐條解釋:

from coden

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的命令可以借鑑我的另一篇部落格

1、from codenvy/cpp_gcc

from是後面是該目標映象使用的基礎映象,基礎映象有且只能有乙個,映象可以通過docker search命令去docker hub上去找自己想要的基礎映象。由於我們想要編譯乙個c++檔案,我們可以使用帶有g++或者gcc的映象作為基礎映象,我們可以搜尋一下帶有g++的映象,如下圖所示:

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

輸入docker images命令可以檢視本地的所有映象,如下圖所示:

例如我這裡有兩個映象:乙個剛才**的codenvy/cpp_gcc,還有乙個ubuntu映象。

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

例如我們使用該ubuntu映象生成乙個容器:

然後檢視g++的版本:

發現並沒有安裝g++

sudo命令也沒有。

所以我們需要**乙個帶有g++的映象,也可以自己在ubuntu映象裡手動安裝,不過就是有點費事。

2、run mkdir /home/user/myapp

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

該命令就是在 /home/user 路徑下新建乙個 myapp 資料夾

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

add命令是將宿主機下的檔案拷貝到映象,也可以用copy命令,不過add比copy的功能更強大,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

三、建立映象

使用命令:

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

./hello-dockerfile是我們dockerfile的所在位置

my_hello_docker是新建的映象的名字

v1.0是該映象的標籤,例如這是第一版

構建映象的過程如下圖所示:

構程式設計客棧建完成我們檢視是否成功構建,通過docker images命令檢視當前本地的所有映象:

在這裡我們看到多了乙個映象:my_hello_docker,就是我們剛才建立的那個映象,說明映象構建成功。

四、通過該映象執行乙個容器

通過以下命令例項化乙個容器

docker run my_hello_docker:v1.0

然後會得到下面的輸出:

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

Docker部署乙個goalng web服務

前言 需求 我們使用docker compose來部署乙個用gloang實現的web計數器服務,具體使用到gin框架和go microv2版本的微服務框架結合實現。使用docker compose來統一部署到linux contos7 系統上提供服務。一,docker環境 centos上安裝dock...

乙個簡單的tomcat部署方案

需求如下 要將widow下開發的web應用部署到linux的機器下 step1 在本地使用ant將專案打成war ant指令碼如下 2 step2配置linux機器上的tomcat伺服器 3 step3 拷貝檔案 通過securefx將baby.war拷到linux下的 var www baby 完...

docker 建立乙個簡單的image

1 mkdir hello world,建立乙個資料夾,cd hello world 進入資料夾,vim hello.c建立乙個c檔案 寫乙個簡單的方法,列印hello docker 2 編譯c檔案需要安裝gcc 使用 yum install gcc 和glibc static 使用 yum ins...