国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

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

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

服務器之家 - 服務器技術 - 服務器知識 - Dockerfile,就是那么簡單

Dockerfile,就是那么簡單

2021-10-14 21:29小郎碼知答郎同學 服務器知識

寫的最多無非是Dockerfile,以前總覺得Dockerfile構建鏡像很牛逼,寫多了就發現來來回回那幾個命令,難的是shell編程中的反人類語法,今天下班早,我就總結下Dockerfile的知識點,希望可以幫助到大家。

Dockerfile,就是那么簡單

前言

hello,大家好 ,我是郎同學,一個想要每天博學一點點的小青年。

最近幾天,項目超忙,忙什么呢,一方面是忙著項目的第三輪發測,另一方面是忙著給項目組的后端服務上云,作為一名后端開發工程師,寫了一周的Shell腳本,哎呀,那個酸爽哦,我還想在回味一次。

最令我惡心的是,公司自研的容器云平臺一點都不穩定(聽說容器云小組要把底層語言java轉成Go,導致近一段時間都不怎么維護容器云平臺了)。在容器云平臺構建鏡像時常常因為拉取jar包超時而導致構建失敗,當我好不容易構建完成,最終來到各類應用服務,中間件編排時,還需要對各類依賴關系、端口、IP一一進行環境變量的配置,真的是欲仙欲死,欲罷不能。

但是,經過這次項目,我的shell編程能力達到了前所未有的高度(雖然在外人眼中依舊很菜)。

寫的最多無非是Dockerfile,以前總覺得Dockerfile構建鏡像很牛逼,寫多了就發現來來回回那幾個命令,難的是shell編程中的反人類語法,今天下班早,我就總結下Dockerfile的知識點,希望可以幫助到大家。

1、Dockerfile原理

在學習Dokcerfile前,我們需要了解下Dockerfile、Docker鏡像及Dcoker容器間的關系。

Dockerfile,就是那么簡單

容器化

Docker的核心思想就是將應用容器化。

應用容器化通常分為以下幾個步驟:

(1)編寫應用代碼

(2)編寫Dokcerfile腳本,該腳本包含當前應用的描述、依賴以及該如何運行這個應用

(3)對Dockerfile腳本執行docker image build命令,構建鏡像

(4)構建完成的鏡像被使用,完成容器化的過程

因此,編寫優秀的Dockerfile文件對構建鏡像必不可少。

DockerFile是由一系列命令和參數,用以構建docker鏡像的文件,docker能夠讀取Dockerfile指定的指令自動構建,從上到下的每一個指令都會創建一個鏡像層,即鏡像都是多層疊加而成,因此,層越多,效率越低,創建鏡像,層越少越好。因此能在一個指令完成的動作盡量通過一個指令定義。

在Dokcerfile編寫指令的過程中,需要先確定制作鏡像的目錄,即包含Dockerfile文件所在的目錄通常稱為構建上下文。

NOTE:Dockerfile文件必須以字母D開頭。

下面,就讓我們在學習Dockerfile命令過程中理解鏡像的構建。

2、Dockerfile常用命令

我們先看一個Dockerfile的指令表

指令 作用
FROM 構建鏡像使用的基礎鏡像
MAINTAINER 設置鏡像的作者
RUN 編譯鏡像時需要運行的指令
CMD 鏡像的啟動命令
LABEL 設置鏡像的啟動標簽
EXPOSE 設置鏡像暴露的端口
ENV 設置容器的環境變量
ADD 編譯鏡像時復制文件到鏡像中
COPY 編譯鏡像時復制文件到鏡像中(與ADD命令有區別)
ENTRYPOINT 容器的入口程序
VOLUME 設置容器的掛載卷
USER 執行命令的用戶名
WORKDIR 進入容器的目錄
ARG 編譯鏡像時加入的參數

指令看起來很多,其實理解起來并不難,下面,我們對這些指令一一作出解釋

2.1 FROM

每個Dockerfile文件的第一行都是FROM指令,FROM指令指定的鏡像都會作為當前鏡像的基礎鏡像層。

使用格式:

  1. FROMDockerfile,就是那么簡單#默認最新版的鏡像
  2. FROMDockerfile,就是那么簡單[:]#指定tag版本鏡像
  3. FROMDockerfile,就是那么簡單[@]#使用加密后的摘要獲取鏡像

2.2 MAINTAINER

該指令用于確定維護該鏡像的作者信息

使用格式為:

  1. MAINTAINER<name>

目前這個指令已經廢棄了,可以使用指令LABEL

  1. LABELuser="simon"key2="value2"

多個信息可以使用多個鍵值對表示

2.3 RUN

RUN命令為構建鏡像時指令的命令

使用格式:

  1. RUN
  2. RUN["executable","param1","param1"]

第一種格式在在shell終端中運行,即/bin/sh -c(默認);

NOTE: bash與bash -c

bash -c后面接執行的命令

bash后面接可執行的腳本

第二種格式類似于函數調用,可以將executable理解為可執程序,后面就是兩個參數

舉個例子:

  1. RUNyuminstall-yvim
  2. RUN["/bin/bash","-c","yuminstall-yvim"]

每條RUN指定將在當前鏡像基礎上執行指定命令,并提交為新的鏡像,當命令較長時,可以使用\來換行

2.4 CMD

CMD命令為容器啟動時要運行的命令

使用格式:

  1. CMD["executable","param1","param2"]
  2. CMD["param1","param2"]
  3. CMDcommandparam1param2

第一種格式和第二種格式都是在可執行程序加上參數形式

舉例

  1. CMD["bash","-c,"jav-jardemo_application.jar"]
  2. CMD["java-jar","demo_application.jar"]

第三種比較簡單

  1. CMDJava-jardemo_application.jar

2.5 LABEL

LABEL為鏡像指定標簽

  1. LABEL<key>=<key>=<key>=...

我們經常使用LABEL指令代替MAINTAINER指令

2.6 EXPOSE

EXPOSE是暴露容器運行時的端口,但是EXPOSE并不會使容器訪問主機的端口,如果想使得容器與主機的端口有映射關系,必須在容器啟動的時候加上 -P參數。

使用格式:

  1. EXPOSE8848#NACOS
  2. EXPOSE8070#APOLLO

2.7 ENV

ENV是設置環境變量,以便在腳本中使用

使用格式:

  1. ENV<key>
  2. ENV<key>=..

2.8 ADD

ADD是復制命令,將Dockerfile上下文目錄中文件/路徑復制容器的指定目錄中

使用格式:

  1. ADD...
  2. ADD["",...""]

src指的是的上下文目錄下的文件,dest指的是容器中的路徑

NOTE:

當復制一個壓縮文件時,使用ADD指令可以自定解壓

ADD可以復制url到容器中

2.9 COPY

COPY類似于ADD,拷貝文件和目錄到容器中,它可以從構建上下文目錄中<原路徑>的文件/目錄復制到新的一層的鏡像內的<目標路徑>位置

使用格式:

  1. COPYsrcdest
  2. COPY["",...""]

2.10 ENTRYPOINT

ENTRYPOINT和CMD指令類似,都是在容器啟動時執行

使用格式:

  1. ENTRYPOINT["executable","param1","param2"]
  2. ENTRYPOINTcommandparam1param2

2.11 VOLUME

VOLUME指令實現掛載功能,用于定義容器運行時可以掛載到宿主機的目錄

使用格式:

  1. VOLUME["/data"]

2.12 USER

USER設置啟動容器的用戶

使用格式:

  1. USERsimongsimon

simon為用戶,gsimon為用戶組

2.1.3 WORKDIR

WORKDIR設置容器內的工作目錄,當創建容器后,終端默認登錄進來的工作目錄。

使用格式:

  1. WORKDIR/path/to/workdir

3、一個簡單的Dockerfile文件實例

3.1 編寫Dockerfile文件

  1. #基于哪個鏡像
  2. Fromjava:8
  3. #暴露端口
  4. EXPOSE8080
  5. #創建工作目錄
  6. RUNmkdir-p/com/simon/study
  7. #復制文件到容器
  8. ADDtarget/demo_application.jar/com/simon/study
  9. #進入工作目錄
  10. WORKDIR/com/simon/study
  11. #配置容器啟動后執行的命令
  12. ENTRYPOINT["java","-jar","demo_application.jar"]

3.2 使用docker build命令構建鏡像

  1. dockerbuild-tdemo_application:v1.0

docker build -t 鏡像名稱:標簽 ,使用-t選項指定了鏡像的標簽。

3.3 啟動鏡像

  1. dockerrun-p8080:8080demo-application:v1.0

4、總結

這篇文章只是簡單的介紹了Dockerfile的使用,并沒有針對上云做具體的介紹。事實上,編寫上云腳本不僅僅只是編寫Dockerfile,它還會牽扯到其它的腳本配合使用,與其它腳本相比,Dockerfile算是很簡單的了,因為其它腳本還要編寫大量的中間件的環境變量,用戶/目錄的授權,SSL證書的檢測等等。

如果對上云感興趣的同學,可以私信我,相信我能幫助到你!

原文鏈接:https://mp.weixin.qq.com/s/Tw24EUbxzsmYr5zLKP26tg

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 亚洲 中文 欧美 日韩 在线观看 | 免费看黄的视频网站 | 中文字幕在线不卡 | 国产高清在线 | 99精品视频在线免费观看 | 久久国产一区 | 国产精品无码久久久久 | 在线视频 中文字幕 | 91在线日韩 | 伊人热久久婷婷 | 精品久久久久久久久久久久 | 在线一级黄色片 | 最新在线国产 | 国产精品视频入口 | 国产人久久人人人人爽 | 日韩精品www | 欧美中文字幕一区二区三区 | 日韩成人免费中文字幕 | 久久精品视频网站 | 国产精品亚洲综合 | 亚洲精彩视频 | 99久久夜色精品国产网站 | 欧美视频三区 | 日韩福利 | 免费黄色观看 | 国产高清一区二区 | h漫在线观看 | 四虎网站| 亚洲欧洲日韩 | 精品无码三级在线观看视频 | 人人爱人人射 | 亚洲精品一区二区三区在线观看 | 国产精品一区二区不卡 | 在线观看一区 | 亚洲视频在线观看网址 | 日韩欧美在线观看一区二区 | 免费国产黄色大片 | 欧美日韩国产综合视频 | 精品亚洲一区二区 | 欧美一区二区三区在线看 | 欧美日韩精品久久久 |