天天看點

docker 增加cpu線程數Docker指令小結

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/