Docker指令小結
基本指令
docker run
- docker run 容器辨別 : 運作容器,該指令實際上是 docker create 和 docker start 的組合。
- docker run 容器辨別 指令 : 容器啟動時執行相應的指令。
-d
- docker run -d 容器辨別 : 以背景守護程序形式運作容器。
-it
- docker run -it 容器辨別 : 以互動模式進入容器,并打開終端。
--name
- docker run 容器辨別 –name “my_test”: 在啟動容器時可以通過 –name 參數顯示地為容器命名。
--restart
- docker run -d –restart=always 容器辨別 : 容器可能會因某種錯誤而停止運作。對于服務類容器,我們通常希望在這種情況下容器能夠自動重新開機。–restart=always 意味着無論容器因何種原因退出(包括正常退出),就立即重新開機。該參數的形式還可以是 –restart=on-failure:3,意思是如果啟動程序退出代碼非0,則重新開機容器,最多重新開機3次。
-m 或 --memory
- docker run -m 200M –memory-swap=300M ubuntu : -m 或 –memory:設定記憶體的使用限額,例如 100M, 2G。–memory-swap:設定 記憶體+swap 的使用限額。
--vm
- docker run -it -m 200M –memory-swap=300M progrium/stress –vm 1 –vm-bytes 280M : –vm 1:啟動 1 個記憶體工作線程。–vm-bytes 280M:每個線程配置設定 280M 記憶體。
-c 或 --cpu-shares
- docker run –name “container_A” -c 1024 ubuntu : 通過 cpu share 可以設定容器使用 CPU 的優先級。
--cpu
- docker run –name container_my it -c 1024 progrium/stress –cpu 1 : –cpu 用來設定工作線程的數量。目前 host 隻有 1 顆 CPU,是以一個工作線程就能将 CPU 壓滿。如果 host 有多顆 CPU,則需要相應增加 –cpu 的數量。
-h
- docker run -h myhostname -it ubuntu : 預設情況下,容器的 hostname 是它的短ID,可以通過 -h 或 –hostname 參數設定。
images
- docker images : 已經下載下傳到本地的所有鏡像資訊。
- docker images 容器辨別 : 檢視此鏡像的資訊
ps
- docker ps 或者 docker container ls 顯示容器正在運作。
- docker ps -a : 檢視所有狀态的容器。
rename
- docker rename 舊容器名字 新容器名字 : 重命名容器。
pull
- docker pull 容器辨別: 從 Docker Hub 下載下傳相應容器。
push
- docker push 鏡像辨別 : 将鏡像上傳到 Docker Hub。
commit
- docker commit 鏡像辨別 新的鏡像名字 : 指令将容器儲存為新的鏡像。
build
- docker build -t 新鏡像名字 : 利用Dockerfile建構新的鏡像。
- docker build -t 新鏡像名字:版本号 : 利用Dockerfile建構新的鏡像以及其版本号。
login
- docker login -u 使用者名 : 在docker host登入Docker Hub。
tag
- docker tag 舊鏡像名字 新鏡像名字 : 重新命名鏡像。
history
- docker history 鏡像辨別 : 顯示鏡像的建構曆史,也就是 Dockerfile 的執行過程。
rmi
- docker rmi 鏡像名字[:版本] : 删除 host 上的鏡像.
rm
- docker rm 鏡像辨別 【鏡像辨別】: 删除一個或多個容器。
- docker rm -v $(docker ps -aq -f status=exited) : 批量删除所有已經退出的容器。
- docker rm -v : ocker rm 删除容器時可以帶上 -v 參數,docker 會将容器使用到的 volume 一并删除,但前提是沒有其他容器 mount 該 volume,目的是保護資料,非常合理。果删除容器時沒有帶 -v 呢?這樣就會産生孤兒 volume,好在 docker 提供了 volume rm 子指令可以對 docker managed volume 進行維護。
search
- docker search 鏡像名字 : 在指令行中就可以搜尋 Docker Hub 中的鏡像。
stop
- docker stop 容器辨別 : 停止一個容器,指令本質上是向該程序發送一個 SIGTERM 信号。
kill
- docker kill 容器辨別 : 停止一個容器,指令本質上是向該程序發送一個 SIGKILL 信号。
attach
- docker attach 容器長ID : 直接進入容器 啟動指令 的終端,不會啟動新的程序。
exec
- docker exec -it 容器短ID bash : 在容器中打開新的終端,并且可以啟動新的bash程序。
logs
- docker logs -f 容器短ID : 檢視啟動指令的輸出, -f 的作用與 tail -f 類似,能夠持續列印輸出。
create
- docker create 鏡像名字 : 建立的容器處于 Created 狀态。
start
- docker start 容器辨別 : 對于處于停止狀态或建立狀态的容器,可以通過 docker start 重新啟動,且會保留容器的第一次啟動時的所有參數。
restart
- docker restart 容器辨別 : 可以重新開機容器,其作用就是依次執行 docker stop 和docker start。
pause
- docker pause 容器辨別 : 使容器處于暫停狀态,不會占用 CPU 資源。
unpause
- docker unpause 容器辨別 : 處于暫停狀态的容器不會占用 CPU 資源,直到通過 docker unpause 恢複運作。
docker-machine
- docker-machine ls : 檢視一下目前的 machine。
網絡配置
network ls
- docker network ls : 在docker host 上檢視建立的網絡。
network inspect bridge
- docker docker network inspect bridge : 看一下 bridge 網絡的配置資訊。
network connect
docker network connect my_net 2b668e52480e : 為 httpd 容器添加一塊 net_my 的網卡。
create --driver
Docker 提供三種 user-defined 網絡驅動:bridge, overlay 和 macvlan。overlay 和 macvlan 用于建立跨主機的網絡,bridge類似于自帶的橋模式。
- docker network create –driver bridge my_net : 通過橋驅動,建立了一個屬于自己的網絡。
--subnet 與 --gateway
- docker network create –driver bridge –subnet 172.22.16.0/24 –gateway 172.22.16.1 my_net : 将自己建立的網絡,設定其所屬的網段、預設網關。
--ip
- docker run -it –network=my_net2 –ip 172.22.16.8 busybox : 容器運作時從 subnet 中指定一個靜态 IP。
--network=
- docker run -it –network=none busybox : 容器建立時,可以通過 –network=none 指定使用 none 網絡。
--network=container:[web1]
- docker run -it –network=container:web1 busybox : joined 容器是另一種實作容器間通信的方式。joined 容器非常特别,它可以使兩個或多個容器共享一個網絡棧,共享網卡和配置資訊,joined 容器之間可以通過 127.0.0.1 直接通信。請看下面的例子:先建立一個 httpd 容器,名字為 web1。docker run -d -it –name=web1 httpd ,然後建立 busybox 容器并通過 –network=container:web1 指定 jointed 容器為 web1。
-p
- docker run -d -p 80 httpd : 将容器對外提供服務的端口映射到host主機上的随機端口。
- docker run -d -p 8080:80 httpd : 将容器的 80 端口映射到 host 的 8080 端口。
存儲配置
--blkio-weight
改變容器 Block IO 的優先級,目前 Block IO 限額隻對 direct IO(不使用檔案緩存)有效。
- docker run -it –name container_A –blkio-weight 600 ubuntu : 設定的是相對權重值600,預設為 500。
bps 或 iops
bps 是 byte per second,每秒讀寫的資料量。 iops 是 io per second,每秒 IO 的次數。 –device-read-bps,限制讀某個裝置的 bps。 –device-write-bps,限制寫某個裝置的 bps。 –device-read-iops,限制讀某個裝置的 iops。 –device-write-iops,限制寫某個裝置的 iops。 docker run -it –device-write-bps /dev/sda:30MB ubuntu : 限制容器寫 /dev/sda 的速率為 30 MB/s。
info
- docker info : 檢視系統預設的driver。
-v
- docker run -d -v ::<權限> httpd : 将某一個host檔案mount到容器中,容器中已存在的目錄檔案(container path)資料将會被隐藏,取而代之的是host path目錄下的資料。<權限>用于指定容器對于挂在資料的讀寫權限,預設權限是可讀可寫。
- docker run -d -v <host path/file>:<container path/file>:<權限> httpd : 除了 bind mount 目錄,還可以單獨指定一個檔案。使用 bind mount 單個檔案的場景是:隻需要向容器添加檔案,不希望覆寫整個目錄,同時也保留了容器原有的資料。
- docker run -d -v <host path/file> httpd : 建立docker managed volume,無控制,均為讀寫權限。建立過程:容器啟動時,簡單的告訴 docker “我需要一個 volume 存放資料,幫我 mount 到目錄 /abc”。docker 在 /var/lib/docker/volumes 中生成一個随機目錄作為 mount 源。如果 /abc 已經存在,則将資料複制到 mount 源。将 volume mount 到 /abc。
cp
- docker cp hostfile 容器短ID:容器目錄的全路徑 : 可以在容器和 host 之間拷貝資料。
--volumes-from
- docker run –name web1 -d -p 80 –volumes-from vc_data httpd : 其他容器可以通過 –volumes-from 使用 vc_data 這個 volume container。
volume ls
- docker volume ls : 檢視使用的 docker managed volume 。
volume rm
- docker volume rm [docker managed volumeID] : 删除容器中的docker managed volume。
volume prune
- docker volume prune : 用這個指令删除孤兒 volume。
該總結到44…
資料管理配置
容器監控配置
日志管理配置
參考文獻:
https://clodfisher.github.io/2018/03/DockerCommand/