docke基本使用

2021-10-11 04:32:04 字數 4004 閱讀 4094

介紹docker架構及三個基本概念:映象、容器和倉庫。介紹映象和容器的基本操作;從官方倉庫拉取映象(再建立自己的映象)。

docker client 客戶端通過命令列或者其他工具使用 docker sdk 與docker守護程序通訊。

docker host 主機是乙個物理的或虛擬的機器,用於執行docker容器或守護程序,主機中有本地映象。

docker registry會有多個倉庫,每個倉庫都,每個倉庫可以包含多個標籤,每個標籤對應乙個映象。

列出本地主機上的映象

從映象倉庫中拉取或者更新指定映象。

(1)語法

docker pull [options] name[:tag|@digest]
options說明:

(2)例項

docker pull ubuntu
docker pull ubuntu:18.04
刪除本地倉庫的映象

建立乙個新的容器並執行乙個命令,語法如下

docker run [options] image [command]

[arg...]

常見的選項

幾個例子如下:

使用docker映象nginx:latest以後臺模式啟動乙個容器,並將容器命名為mynginx。

docker run --name mynginx -d nginx:latest
使用映象ubuntu以互動模式啟動乙個容器,將主機的80埠對映到容器8080埠,並在容器內執行/bin/bash命令。

docker run -p 80:8080 –it ubuntu bash
以後臺服務執行,成功後返回容器id

docker run -itd --name ubuntu-test ubuntu /bin/bash
列出容器列表,預設docker ps輸出執行中的容器。如法如下

docker ps

[options]

常見選項有

輸出容器資訊的常見的字段有container id、image、command、created、status、ports、names等。

在使用-d引數時,容器啟動後會進入後台。此時想要進入容器,可以通過以下指令進入:

docker exec -it 243c32535da7 /bin/bash
當使用exit從容器退出時,不會導致容器的退出。

這裡要求容器是存在的。

選項-s :向容器傳送乙個訊號,例如殺掉執行中的容器mynginx

$ docker kill -s kill mynginx
刪除乙個不再需要的容器,這個容器必須是停止狀態的。

檢視停止狀態的容器可以命令docker ps -f status=exited

主要是自己定製映象。

dockerfile 是乙個用在來構建映象的文字檔案,文字內容包含了一條條構建映象所需的指令和說明。使用docker build命令根據dockerfile建立映象,命令語法為

docker build [options] path | url | -
選項較多,使用help命令查詢。

例如,當前目錄下建立乙個dockerfile檔案,內容為

from    ubuntu:18.04
成功後檢視當前容器

多出的記憶體其實就是copy的檔案大小。

當我們使用該映象啟動容器,互動模式下使用命令就可以執行該程式。

(1)from 和 run

from:定製的映象都是基於 from 的映象,這裡的 nginx 就是定製需要的基礎映象。後續的操作都是基於 nginx。

run:用於執行後面跟著的命令列命令。有以下倆種格式:

shell 格式:

run 《命令列命令》

#《命令列命令》 等同於,在終端操作的 shell 命令。

exec 格式:

run ["可執行檔案", "引數1", "引數2"]

例如:run ["./test.php", "dev", "offline"] 等價於 run ./test.php dev offline

注意:dockerfile 的指令每執行一次都會在 docker 上新建一層。所以過多無意義的層,會造成映象膨脹過大。例如:

from centos

run yum install wget

run wget -o redis.tar.gz ""

run tar -xvf redis.tar.gz

以上執行會建立 3 層映象。可簡化為以下格式:

from centos

run yum install wget \

&& wget -o redis.tar.gz "" \

&& tar -xvf redis.tar.gz

如上,以&&符號連線命令,這樣執行後,只會建立 1 層映象。

(1)copy

複製指令,從上下文目錄中複製檔案或者目錄到容器裡指定路徑。

格式:

copy [--chown=

:]源路徑1>

... 目標路

copy [--chown=

:]["《源路徑1>",... "《目標路徑》"

]

[–chown=:]:可選引數,使用者改變複製到容器內檔案的擁有者和屬組。

《源路徑》:原始檔或者源目錄,這裡可以是萬用字元表示式,其萬用字元規則要滿足 go 的 filepath.match 規則。例如:

copy hom* /mydir/

copy hom?.txt /mydir/

《目標路徑》:容器內的指定路徑,該路徑不用事先建好,路徑不存在的話,會自動建立。注意,目錄需要帶斜槓。

(2)add

(3)cmd

類似於 run 指令,用於執行程式,但二者執行的時間點不同:

作用:為啟動的容器指定預設要執行的程式,程式執行結束,容器也就結束。cmd 指令指定的程式可被 docker run 命令列引數中指定要執行的程式所覆蓋。

注意:如果 dockerfile 中如果存在多個 cmd 指令,僅最後乙個生效。

格式:

cmd 

cmd [

"《可執行檔案或命令》","","",...]

cmd [

"","",...]

# 該寫法是為 entrypoint 指令指定的程式提供預設引數

推薦使用第二種格式,執行過程比較明確。第一種格式實際上在執行的過程中也會自動轉換成第二種格式執行,並且預設可執行檔案是 sh。

在docker 容器中構建好自己需要的環境,再匯出為image映象。當前操作起始做的就是dockerfile的事情。

ubuntu18 04中安裝使用docker

直接上步驟 1 首長更新一下系統 sudo apt get update sudo apt get upgrade 2 我選擇的是從ubuntu儲存庫安裝docker版本 sudo apt install docker.io 3 安裝完成後,啟動docker並使用systemctl命令將其新增到引導...

Docker系列四 使用UI管理docker容器

一 什麼是portainer?docker pull portainer portainer三 執行portainer portainer執行方式有以下兩種方式 1 單機版執行 如果僅有乙個docker宿主機,則可使用單機版執行,執行以下命令就可以啟動了 docker run d p 9000 90...

常用docke命令

安裝docker步驟 1 安裝之前前移除現有docker sudo yum remove docker docker client docker client latest docker common docker latest docker latest logrotate docker logr...