一、首先建立乙個 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...