Docker 初識

來源:互聯網
上載者:User

標籤:ref   gis   debug   建立   獨立   shell   proc   tab   docker   

參考:

https://www.cnblogs.com/SzeCheng/p/6822905.html

43022769

71718805

 

Docker簡介

Docker是一個能夠把開發的應用程式自動部署到容器的開源引擎。使用Docker,開發人員只需關心容器中啟動並執行應用程式,而營運人員只需要關心如何管理容器。Docker設計的目的就是要加強開發人員寫代碼的開發環境與應用程式要部署的產生環境的一致性。

由於客居於作業系統,容器只能運行在與頂層宿主機相同或相似的作業系統。yu

簡單說就是,開發環境打包成鏡像,可以搬移到任何支援Docker的環境,然後運行。

 

圖來源:https://www.cnblogs.com/SzeCheng/p/6822905.html

 

 

Docker組件

核心組件:

Docker用戶端和伺服器(Docker引擎)、Docker鏡像、Registry、Docker容器。

Docker的技術組件:

一個原生的Linux容器格式(libcontainer);

Linux的namespace,用於隔離檔案系統、進程和網路;

資源隔離和分組:使用cgroups將CPU和記憶體之類的資源獨立分配給每個Docker容器;

寫時複製

日誌

互動式shelll

一個Dockerfile

FROM alpine_bash:latest

MAINTAINER sp

RUN echo hello

CMD echo world

 

為什麼載入一個OS基礎鏡像?43022769

Container內需不需要OS?

Container不是一個VM技術,所以和OS沒有關係。如果我沒有理解錯,這個Container應該指的是Docker Run出的運行環境,因為在裡面我們可以運行一些命令,讓使用者以為它就是一個完整的OS環境。這是不對的。其實Docker只是一個進程。當你使用docker exec登入進去的也只是一個Terminal的類比環境。它不是真實的OS。正因為它不是OS,所以它是直接調用主機的Kernel的。而Container本身只是一個系統進程。

 

為何需要OS的基礎鏡像?

首先,OS的問題上面已經解釋過了,它不是一個OS,但為何需要OS的基礎鏡像?其實這裡的基礎鏡像是一個包含rootfs的鏡像。Kernel啟動後是需要把開機檔案解壓到rootfs上的,然後kernel找到init檔案啟動就可以得到一個Linux環境了,Docker做的事情就是類比這個過程,讓kernel給出一個獨立的隔離環境。

docker build 構建鏡像

sudo docker build -t qt:v1 /home/sp/dockertest/

查看

sudo docker images qt

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

qt                  v1                  aaec4961ec31        2 minutes ago       19.83 MB

 

 

查看鏡像如何構建出來的

sudo docker history qt:v1

IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT

aaec4961ec31        11 minutes ago      /bin/sh -c #(nop)  CMD ["/bin/sh" "-c" "echo    0 B

1f10b0c38e9a        11 minutes ago      /bin/sh -c echo hello                           0 B

b00f1a7fc4a7        11 minutes ago      /bin/sh -c #(nop)  MAINTAINER sp        0 B

91370d5da095        3 months ago        bash                                            182 B

090950687196        3 months ago        bash                                            267 B

62fc0977df76        3 months ago        sh                                              9.032 MB

a0f29218fb23        3 months ago        sh                                              42.86 kB

c3447930f3bc        3 months ago        sh                                              6.606 MB

<missing>           3 months ago                                                        4.144 MB            Imported from -

 

 

docker save 儲存鏡像

sudo docker save -o /home/sp/dockertest/qt_pack.tar qt:v1

 

docker rmi 刪除鏡像

sudo docker rmi qt

 

docker run 運行容器

sudo docker run -i -t --name=qttest  qt:v1

 

docker exec 在容器內部運行進程 docker top 查看容器內的進程 docker stats 查看容器統計資訊 Docker 命令&參數 build構建命令參數

轉自:71718805

docker build命令用於根據給定的Dockerfile和上下文以構建Docker鏡像。

docker build命令的使用格式:
docker build [OPTIONS] <PATH | URL | ->
1. 常用選項說明
--build-arg,設定構建時的變數
--no-cache,預設false。設定該選項,將不使用Build Cache構建鏡像
--pull,預設false。設定該選項,總是嘗試pull鏡像的最新版本
--compress,預設false。設定該選項,將使用gzip壓縮構建的上下文
--disable-content-trust,預設true。設定該選項,將對鏡像進行驗證
--file, -f,Dockerfile的完整路徑,預設值為‘PATH/Dockerfile’
--isolation,預設--isolation="default",即Linux命名空間;其他還有process或hyperv
--label,為產生的鏡像設定metadata
--squash,預設false。設定該選項,將新構建出的多個層壓縮為一個新層,但是將無法在多個鏡像之間共用新層;設定該選項,實際上是建立了新image,同時保留原有image。
--tag, -t,鏡像的名字及tag,通常name:tag或者name格式;可以在一次構建中為一個鏡像設定多個tag
--network,預設default。設定該選項,Set the networking mode for the RUN instructions during build
--quiet, -q ,預設false。設定該選項,Suppress the build output and print image ID on success
--force-rm,預設false。設定該選項,總是刪除掉中間環節的容器
--rm,預設--rm=true,即整個構建過程成功後刪除中間環節的容器

2. PATH | URL | -說明:
給出命令執行的上下文。
上下文可以是構建執行所在的本地路徑,也可以是遠程URL,如Git庫、tarball或文字檔等。
如果是Git庫,如https://github.com/docker/rootfs.git#container:docker,則隱含先執行git clone --depth 1 --recursive,到本地臨時目錄;然後再將該臨時目錄發送給構建進程。
構建鏡像的進程中,可以通過ADD命令將上下文中的任何檔案(注意檔案必須在上下文中)加入到鏡像中。
- 表示通過STDIN給出Dockerfile或上下文。
樣本:

docker build - < Dockerfile

說明:該構建過程只有Dockerfile,沒有上下文

docker build - < context.tar.gz

說明:其中Dockerfile位於context.tar.gz的根路徑

docker build -t champagne/bbauto:latest -t champagne/bbauto:v2.1 .

docker build -f dockerfiles/Dockerfile.debug -t myapp_debug .

 

 

Docker 初識

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.