Docker使用Dockerfile構建簡單鏡像

Docker使用Dockerfile構建簡單鏡像

首先確保系統已經安裝docker

構建鏡像

安裝基礎鏡像

sudo docker pull ubuntu

查看鏡像是否已經拉取成功

REPOSITORY                  TAG                 IMAGE ID            CREATED             SIZE
ubuntu                      latest              452a96d81c30        4 weeks ago         79.6 MB
centos                      latest              e934aafc2206        7 weeks ago         199 MB

編寫Dockerfile

touch Dockerfile
FROM ubuntuCOPY demo_api /usr/local/binEXPOSE 9899CMD ["/usr/local/bin/demo_api"]

這個配置文件的意思是

  • 基礎鏡像為ubuntu
  • 將本地的demo_api二進制文件拷貝到/usr/local/bin下
  • 暴露9899端口
  • CMD執行這個二進制文件

EXPOSE 用來暴露端口,格式為:EXPOSE <端口1> [<端口2>……]
值得注意的是,EXPOSE 只是聲明運行容器時提供的服務端口,這僅僅是一個聲明,在運行容器的時候并不會因為這個聲明就會開啟端口服務,你依舊需要使用 -P 或者 -p 參數映射端口。在 Dockerfile 中寫這樣的端口聲明有助于使用者理解這個鏡像開放哪些服務端口,以便配置映射。并且,可以在 docker run 命令執行的時候使用 -P 參數隨機映射宿主主機端口到 EXPOSE 的容器端口。

構建鏡像

gorden@sung:~$ sudo docker build -t demoapi:v1.0 .
Sending build context to Docker daemon 7.448 MB
Step 1/4 : FROM ubuntu---> 452a96d81c30
Step 2/4 : COPY demo_api /usr/local/bin---> 44e68b440b1b
Removing intermediate container e7db3b02db3c
Step 3/4 : EXPOSE 8818---> Running in 5f677d533ea3
 ---> 3022bc179891
Removing intermediate container 5f677d533ea3
Step 4/4 : CMD /usr/local/bin/demo_api---> Running in 9e9f82a0780c
 ---> 1bcf0f228a7d
Removing intermediate container 9e9f82a0780c
Successfully built 1bcf0f228a7d

-t 參數后面指定鏡像的名字。最后一個“ . ”指的是當前目錄。

查看鏡像是否存在了

gorden@sung:~$ sudo docker images
REPOSITORY                  TAG                 IMAGE ID            CREATED             SIZE
demoapi                     v1.0                1bcf0f228a7d        12 seconds ago      86.3 MB
ubuntu                      latest              452a96d81c30        4 weeks ago         79.6 MB
centos                      latest              e934aafc2206        7 weeks ago         199 MB
gorden@sung:~$

從鏡像運行容器

gorden@sung:~$ sudo docker run --name go_api -d -p 9899:9899 demoapi:v1.0
3d52e9e4f3c0ce1df9800aa44bb2d97b5dbb7704f0c18e46cb86551c9bfb7d0b
gorden@sung:~$

查看是否正在運行

gorden@sung:~$ sudo docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES
3d52e9e4f3c0        demoapi:v1.0        "/usr/local/bin/de..."   9 minutes ago       Up 9 minutes        9899/tcp, 0.0.0.0:9899->9899/tcp    go_api
gorden@sung:~$ 

由于我這個二進制文件為一個go版本的簡單RestFul Api所以可以在瀏覽器中測試:

localhost:9899/people

有返回結果,正面成功。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/536085.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/536085.shtml
英文地址,請注明出處:http://en.pswp.cn/news/536085.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Weave Scope安裝

Weave Scope安裝 首先確保已經安裝docker 實時了解Docker容器狀態 查看容器基礎設施的概況&#xff0c;或者專注于一個特殊的微服務。從而輕松發現并糾正問題&#xff0c;確保你的容器化應用的穩定與性能。 內部細節與深度鏈接 查看容器的指標、標簽和元數據。 在一個可擴展…

MYSQL導入數據出現ERROR 1049 (42000): Unknown database 'n??;'

MYSQL導入數據出現ERROR 1049 (42000): Unknown database ‘n??;’ 背景 我需要將一個csv表中的數據導入數據庫創建好的表中&#xff0c;產生的問題如下&#xff1a; 原因尋找 因為我并沒有使用’n??;的數據庫&#xff0c;所以很好奇這個錯怎么來的&#xff0c;嘗試如下…

Win10忘記ubuntu子系統密碼

Win10忘記ubuntu子系統密碼 目前新版win10已經支持ubuntu子系統&#xff0c;如果忘記子系統密碼怎么辦&#xff1f; linux單用戶模式 在ubuntu中如果忘記密碼&#xff0c;可以在啟動的時候&#xff0c;在grub內更改用戶為root進入&#xff0c;這樣就可以使用最高權限的單用戶…

藍橋杯練習系統,入門訓練,Java版

藍橋杯練習系統&#xff0c;入門訓練&#xff0c;Java版序列求和圓的面積Fibonacci數列希望大家提建議我加以修改序列求和 import java.util.*; public class Main {public static void main(String[] args) {Scanner cinnew Scanner(System.in);long ncin.nextLong();System.…

SVG入門理解

SVG入門SVG 元素簡單的形狀rectcircleellipselinetextpath SVG 樣式分層和繪圖順序透明度 SVG入門 當我們用SVG生成和操作一些炫酷的效果時,D3是最佳選擇。使用div和其他原生HTML元素繪圖也是可以的&#xff0c;但是太笨重&#xff0c;而且會受到不同瀏覽器的限制&#xff0c…

【哈佛幸福課筆記】【1】

【哈佛幸福課筆記】【1】 ? ? 一個月的時間看完了哈佛幸福課&#xff0c;正如Tal所說課程的結束才是學習的開始。對于課程觀點的思考&#xff0c;對于個人習慣的培養&#xff0c;對于思維模式的轉變還需要花大量的時間去練習。這個系列的帖子將作為我個人的讀書筆記&#x…

Angular 6+ 之新版service

Angular 6+ 之新版service Angular 6已經發布了,Angular 6中有一些新功能,其中一個就是提供service的共享實例。 回首Angular 5- 下面是一段熟悉的代碼,可以為整個應用程序提供服務。我們將它添加到AppModule中的providers[]。 自定義服務類 // data.service.ts export c…

Angular CDK Layoout 檢測斷點

Angular CDK檢測斷點 Angular CDK有一個布局包,其服務可以輕松檢測窗口大小并與媒體查詢匹配。這使得你可以完全控制UI并適應不同的屏幕尺寸。 讓我們快速了解一下如何使用CDK的布局模塊。 Setup 首先,您需要確保在您的應用中安裝了Angular CDK: $ npm install @angular/c…

Angular Render2

Angular Render2 Renderer2類是Angular以service的形式提供的抽象,允許操作應用程序的元素而無需直接觸摸DOM。這是推薦的方法,因為它可以更容易地開發可以在沒有DOM訪問的環境中呈現的應用程序,例如在服務器上,web worker,或者原生移動上。 需要注釋的是,現在已棄用原始…

數據分析方法

數據分析方法 什么是數據分析 從數據到信息的這個過程&#xff0c;就是數據分析。數據本身并沒有什么價值&#xff0c;有價值的是我們從數據中提取出來的信息。 分類 分類分析的目標是&#xff1a;給一批人(或者物)分成幾個類別&#xff0c;或者預測他們屬于每個類別的概率…

RAID陣列基礎知識

RAID陣列基礎知識 獨立硬盤冗余陣列 &#xff08;RAID, Redundant Array of Independent Disks&#xff09;,舊稱廉價磁盤冗余陣列&#xff08;Redundant Array of Inexpensive Disks&#xff09;&#xff0c;簡稱磁盤陣列。 RAID的種類 這里我們只介紹比較常用的RAID類型&am…

timeshift備份你的Linux系統

timeshift備份你的Linux系統 安裝 打開終端&#xff08;ctrl alt T&#xff09;并逐個執行以下命令 sudo apt-add-repository -y ppa:teejee2008/ppa sudo apt-get update sudo apt-get install timeshift 創建 點擊Create按鈕 默認不能備份用戶下的文件&#xff0c;所以…

Go語言vscode環境配置

Go語言vscode環境配置 此教程在GO已經安裝成功的前提下。 安裝vscode擴展 在vscode擴展里面搜索go&#xff0c;然后下載擴展。 安裝go 插件 在$GOPATH目錄下創建bin,pkg,src切換到$GOPATH/bin目錄下&#xff0c;打開終端輸入以下命令&#xff0c;不需要翻墻&#xff1a; go…

Angular實現懸浮球組件

Angular實現懸浮球組件 在手機 App 上,我們經常會看到懸浮球的東東,用著可能很舒服,但是 web 網頁上卻很少見,今天我們就通過 Angular 來實現,當然使用其他框架也是可以的。 功能要求: 支持設置直徑支持點擊觸發信號支持設置鼠標按壓時間實現的過程中省略的部分天填坑過…

Docker+Nginx部署Angular國際化i18n

Docker+Nginx部署Angular國際化i18n 在Angular項目中添加default.conf文件 default.conf 為了支持局域網,增加一個域名,即本地的局域網ip地址。 server {listen 80;server_name localhost;server_name 192.168.2.172;location / {root /usr/share/nginx/html;lo…

消息隊列-Message Queue

消息隊列-Message Queue 目前隨著互聯網的普及以及上網用戶的增多&#xff0c;擁有一套 安全、穩定、低耦合、高性能的內部通信工具尤為重要。 什么是消息隊列&#xff1f; 消息隊列&#xff08;英語&#xff1a;Message queue&#xff09;是一種進程間通信或同一進程的不同線…

Angular 第一章 開始

第一章 開始 用 JavaScript 開發應用程序是一個很大的挑戰。由于它的延展性和缺少類型檢查,在 JavaScript 中構建一個適當大小的應用程序是很困難的。除此之外,我們對所有類型的處理都使用JavaScript,例如用戶界面(UI),操作、客戶端-服務器交互和業務處理/驗證。因此,我們…

Typescript實現單例之父類調用子類

Typescript實現單例之父類調用子類 設計要求 在程序中,需要一個對象可以全局使用,并且只有一個實例Breakpoint 類是一個可以被繼承的類,然后子類必須實現 updateView函數updateView 這個函數可以被自動調用,當窗口發生變化的時候構思 UML 圖 Layout 是一個單例類,也就是全局只…

Angular性能優化之臟檢測

Angular性能優化之臟檢測 當我們在使用 Angular 框架搭建項目時,隨著組件越來越多,頁面也來越復雜,性能會越來越低,主要表現在 CPU 使用率 很高。所以我們要對項目做一定的優化。 Angular臟檢查(Change Detection)機制 Angular 的臟檢測主要是指 zone.js,這是一個開源的…

第一章、第一節 Angular基礎

第一章、第一節 Angular基礎 讓我們先來看看Angular是如何實現組件模式的。 組件模式 Angular 應用程序使用組件模式。你可能聽說過這個模式&#xff0c;它不僅用于軟件開發&#xff0c;還用于制造、建筑和其他領域。簡單地說&#xff0c;它涉及到將更小的、離散的構建塊組合…