介紹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...