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/