天天看點

docker鏡像啟動後端口号是多少_初識Docker

docker鏡像啟動後端口号是多少_初識Docker

點選上方 “TestOps” 訂閱

docker鏡像啟動後端口号是多少_初識Docker

本周TestOps免費試聽課課程表

時間 主題
7.23(周二)14:00 Selenium環境搭建與原理
7.24(周三)20:00 Docker使用
docker鏡像啟動後端口号是多少_初識Docker

軟體開發最大的麻煩事之一,就是環境配置。使用者計算機的環境不相同,可能導緻軟體無法運作。

要使軟體運作正确,使用者必須保證兩件事:作業系統的設定,各種庫群組件的安裝。隻有它們都正确,軟體才能運作。

那麼怎麼才能解決這個大問題呢?

虛拟機是個好方案~

docker鏡像啟動後端口号是多少_初識Docker

但是容器化對于資源的消耗會小很多,會是個更優的選擇。docker就是Linux容器中最受歡迎的一個。

docker鏡像啟動後端口号是多少_初識Docker

在上周六與本周三的複習課程中,芒果就帶大家一起認識了Docker,這裡我們對Docker的基本使用做個小總結。

Docker介紹

Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的鏡像中,然後釋出到任何流行的 Linux或Windows 機器上,也可以實作虛拟化。

要了解Docker的工作原理,需要對以下三個概念有足夠清晰的認識。

鏡像

我們都知道,作業系統分為核心和使用者空間。對于 Linux 而言,核心啟動後,會挂載 root 檔案系統為其提供使用者空間支援。而 Docker 鏡像(Image),就相當于是一個 root 檔案系統。比如官方鏡像 ubuntu:18.04 就包含了完整的一套 Ubuntu 18.04 最小系統的 root 檔案系統。

Docker 鏡像是一個特殊的檔案系統,除了提供容器運作時所需的程式、庫、資源、配置等檔案外,還包含了一些為運作時準備的一些配置參數(如匿名卷、環境變量、使用者等)。鏡像不包含任何動态資料,其内容在建構之後也不會被改變。

容器

鏡像(Image)和容器(Container)的關系,就像是面向對象程式設計中的 類 和 執行個體 一樣,鏡像是靜态的定義,容器是鏡像運作時的實體。容器可以被建立、啟動、停止、删除、暫停等。

容器的實質是程序,但與直接在宿主執行的程序不同,容器程序運作于屬于自己的獨立的命名空間。是以容器可以擁有自己的 root 檔案系統、自己的網絡配置、自己的程序空間,甚至自己的使用者 ID 空間。容器内的程序是運作在一個隔離的環境裡,使用起來,就好像是在一個獨立于宿主的系統下操作一樣。

每一個容器運作時,是以鏡像為基礎層,在其上建立一個目前容器的存儲層,我們可以稱這個為容器運作時讀寫而準備的存儲層為容器存儲層。容器存儲層的生存周期和容器一樣,容器消亡時,容器存儲層也随之消亡。

倉庫

鏡像建構完成後,可以很容易的在目前主控端上運作,但是,如果需要在其它伺服器上使用這個鏡像,我們就需要一個集中的存儲、分發鏡像的服務,Docker Registry 就是這樣的服務。

三者之間關系

如下圖所示:

docker鏡像啟動後端口号是多少_初識Docker

其中Docker Client端向Docker守護程序發送請求,建立或者操作容器等。

Docker安裝

Docker 是一個開源的商業産品,有兩個版本:社群版(Community Edition,縮寫為 CE)和企業版(Enterprise Edition,縮寫為 EE)。企業版包含了一些收費服務,個人開發者一般用不到,是以我們僅僅安裝使用社群版。

這裡安裝系統為CentOS 7:

#安裝一些必要的系統工具
           

還可以通過安裝腳本一鍵安裝:

#安裝curl
           

更多系統版本安裝請參考:

https://docs.docker.com/install/

Docker使用

擷取鏡像

Docker Hub 上有大量的高品質的鏡像可以用。從 Docker 鏡像倉庫擷取鏡像的指令是 docker pull。其指令格式為:

    docker pull [選項] [Docker Registry 位址[:端口号]/]倉庫名[:标簽]

Docker 鏡像倉庫位址:位址的格式一般是 [:端口号]。預設位址是 Docker Hub。

倉庫名:如之前所說,這裡的倉庫名是兩段式名稱,即 /。對于 Docker Hub,如果不給出使用者名,則預設為 library,也就是官方鏡像。

例:

    docker pull ubuntu:18.04

列出鏡像

要想列出已經下載下傳下來的鏡像,可以使用 docker image ls 指令。

結果清單包含了倉庫名、标簽、鏡像 ID、建立時間 以及 所占用的空間。鏡像 ID 則是鏡像的唯一辨別,一個鏡像可以對應多個标簽。

例:

    docker image ls –q 

删除鏡像

如果要删除本地的鏡像,可以使用 docker image rm 指令,其格式為:

docker image rm [選項] [ ...]

其中, 可以是 鏡像短 ID、鏡像長 ID、鏡像名 或者 鏡像摘要。

例:

    docker image rm centos

    docker image rm $(docker image ls -q centos) 

建立并啟動容器

所需要的指令主要為 docker run。

例如,下面的指令輸出一個 “Hello World”,之後終止容器。

    docker run ubuntu:18.04 /bin/echo 'Hello world’

這跟在本地直接執行 /bin/echo 'hello world' 幾乎感覺不出任何差別。

下面的指令則啟動一個 bash 終端,允許使用者進行互動。

$ docker run -t -i ubuntu:18.04 /bin/bash

[email protected]:/#

其中,-t 選項讓Docker配置設定一個僞終端(pseudo-tty)并綁定到容器的标準輸入上, -i 則讓容器的标準輸入保持打開。

在互動模式下,使用者可以通過所建立的終端來輸入指令。

啟動已終止容器

如果使用了 -d 參數運作容器。

$ docker run --name ubuntu_test -d ubuntu:18.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"

此時容器會在背景運作并不會把輸出的結果 (STDOUT) 列印到主控端上面(輸出結果可以用 docker logs 檢視)。

注:容器是否會長久運作,是和 docker run 指定的指令有關,和 -d 參數無關。

使用 -d 參數啟動後會傳回一個唯一的 id。

可以通過 docker container ls 或者 docker ps -a指令來檢視容器資訊。

要擷取容器的輸出資訊,可以通過 docker container logs 指令。

docker container logs [container ID or NAMES]

可以利用 docker container start 指令,直接将一個已經終止的容器啟動運作。

例:

    docker container start ubuntu_test

容器的核心為所執行的應用程式,所需要的資源都是應用程式運作所必需的。除此之外,并沒有其它的資源。可以在僞終端中利用 ps 或 top 來檢視程序資訊。

終止容器

可以使用 docker container stop 來終止一個運作中的容器。

此外,當 Docker 容器中指定的應用終結時,容器也自動終止。

使用者通過 exit 指令或 Ctrl+d 來退出終端時,所建立的容器立刻終止。

例:

docker container stop ubuntu_test

終止狀态的容器可以用 docker container ls -a 指令看到。

例:

docker container ls –a

處于終止狀态的容器,可以通過 docker container start 指令來重新啟動。

此外,docker container restart 指令會将一個運作态的容器終止,然後再重新啟動它。

進入容器

在使用 -d 參數時,容器啟動後會進入背景。

某些時候需要進入容器進行操作,包括使用 docker attach 指令或 docker exec 指令。

attach 指令

例:

    docker attach ubuntu_test

注意:如果從這個 stdin 中 exit,會導緻容器的停止。

exec 指令

docker exec 後邊可以跟多個參數,常用參數為-i -t 參數。

隻用 -i 參數時,由于沒有配置設定僞終端,界面沒有我們熟悉的 Linux 指令提示符,但指令執行結果仍然可以傳回。

當 -i -t 參數一起使用時,則可以看到我們熟悉的 Linux 指令提示符。

例:

    docker exec -it ubuntu_test bash

如果從這個 stdin 中 exit,不會導緻容器的停止。這就是為什麼推薦大家使用 docker exec 的原因。

删除容器

如果要删除本地某個容器,可以使用 docker rm 指令。

    docker rm ubuntu_test

這樣将導出容器快照到本地檔案。

關于Docker鏡像以及容器的使用内容非常多,因為篇幅原因,我們僅僅介紹以上部分,對于更多的内容,我們會在之後的文章進行更新。

docker鏡像啟動後端口号是多少_初識Docker

周六Vip課程預告

  本周六芒果将帶大家繼續TestOps測試運維Python專項課程,在對Docker和Jenkins有個認識之後,我們将學習Django項目的持續內建。

docker鏡像啟動後端口号是多少_初識Docker

每周六全天Vip課程,每周三晚免費課程總結及回顧答疑

docker鏡像啟動後端口号是多少_初識Docker

TestOps|測試運維

精益技術 賦能過程

點選右上角"..."将好文分享給朋友吧

長按二維碼關注我們