補充 docker基礎學習

2022-07-26 09:12:13 字數 3472 閱讀 7839

之前寫了一篇docker未授權訪問的文章,現在來補充一下docker基礎知識,以便更好的學習docker上的漏洞。

docker是一款輕量級的虛擬化的產品,它屬於層級化的架構。最底層是lxc和檔案系統aufs,上面是各種映象,docker實際上是具有依賴關係的多個層組成的,不同的container可能共享底層的資源。docker的核心是基於cgroup和namespace隔離和限制資源。

cgroups是control groups的縮寫,是linux核心提供的一種可以限制、記錄、隔離程序組(process groups)所使用的物理資源(如:cpu,memory,io等等)的機制。最初由google的工程師提出,後來被整合進linux核心。cgroups也是lxc為實現虛擬化所使用的資源管理手段,可以說沒有cgroups就沒有lxc。

docker不同於vm、kvm、xen等虛擬機器。

搜尋公有映象:

1 docker search ubuntu

獲取公有映象

1 docker pull ubuntu

列出本機所有映象

1 docker images

列出本機所有容器

1 docker ps -a

執行乙個容器

1 docker run -it ubuntu

1

usage: docker run [options] image [command] [arg...]

23 -d, --detach=false

指定容器執行於前台還是後台,預設為false

4 -i, --interactive=false

開啟stdin,用於控制台互動

5 -t, --tty=false

分配tty裝置,該可以支援終端登入,預設為false

6 -u, --user=""

指定容器的使用者

7 -a, --attach= 登入容器(必須是以docker run -d啟動的容器)

8 -w, --workdir=""

指定容器的工作目錄

9 -c, --cpu-shares=0

設定容器cpu權重,在cpu共享場景使用

10 -e, --env= 指定環境變數,容器中可以使用該環境變數

11 -m, --memory=""

指定容器的記憶體上限

12 -p, --publish-all=false

指定容器暴露的埠

13 -p, --publish= 指定容器暴露的埠

14 -h, --hostname=""

指定容器的主機名

15 -v, --volume= 給容器掛載儲存卷,掛載到容器的某個目錄

16 --volumes-from= 給容器掛載其他容器上的卷,掛載到容器的某個目錄

17 --cap-add= 新增許可權,許可權清單詳見:http://

linux.die.net/man/7/capabilities

18 --cap-drop= 刪除許可權,許可權清單詳見:http://

linux.die.net/man/7/capabilities

19 --cidfile=""

執行容器後,在指定檔案中寫入容器pid值,一種典型的監控系統用法

20 --cpuset=""

設定容器可以使用哪些cpu,此引數可以用來容器獨佔cpu

21 --device= 新增主機裝置給容器,相當於裝置直通

22 --dns= 指定容器的dns伺服器

23 --dns-search= 指定容器的dns搜尋網域名稱,寫入到容器的/etc/resolv.conf檔案

24 --entrypoint=""

覆蓋image的入口點

25 --env-file= 指定環境變數檔案,檔案格式為每行乙個環境變數

26 --expose= 指定容器暴露的埠,即修改映象的暴露埠

27 --link= 指定容器間的關聯,使用其他容器的ip、env等資訊

28 --lxc-conf= 指定容器的配置檔案,只有在指定--exec-driver=lxc時使用

29 --name=""

指定容器名字,後續可以通過名字進行容器管理,links特性需要使用名字

30 --net="

bridge

"容器網路設定:

31bridge 使用docker daemon指定的網橋

32 host //

容器使用主機的網路

33 container:name_or_id >//

使用其他容器的網路,共享ip和port等網路資源

34 none 容器使用自己的網路(類似--net=bridge),但是不進行配置

35 --privileged=false

指定容器是否為特權容器,特權容器擁有所有的capabilities

36 --restart="no"

指定容器停止後的重啟策略:

37no:容器退出時不重啟

38 on-failure:容器故障退出(返回值非零)時重啟

39always:容器退出時總是重啟

40 --rm=false 指定容器停止後自動刪除容器(不支援以docker run -d啟動的容器)

41 --sig-proxy=true 設定由**接受並處理訊號,但是sigchld、sigstop和sigkill不能被**

entrypoint和cmd區別:

entrypoint是容器的入口點;而cmd可以理解為entrypoint的引數。

執行並進入容器 

1

docker start ubuntu

2 docker attach ubuntu

注意:attach容器之前必須start容器

docker 映象建立

1 docker commit [repo:tag]

docker 基礎學習

docker 倉庫 docker pull nginx 映象拉取 docker run d nginx 後台執行,成功返回id docker ps 檢視已執行的映象 docker exec it 已執行的dockerid bash docker stop dockerid docker run d ...

Docker 開源Detectron 補充

1.git clonedetectron,解壓後存放路徑 home pandamax detectron 2.在檔案 home pandamax detectron lib datasets data下建立coco資料夾,用來存放對應的資料,coco資料夾格式為 3.確定映象detectron的映象...

Docker基礎學習一

vt,就是虛擬化技術 virtualization technology 的縮寫。intel vt就是指intel的虛擬化技術。這種技術簡單來說就是讓可以讓乙個cpu工作起來就像多個cpu並行執行,從而使得在一台電腦內可以同時執行多個作業系統。只有部分intel 的cpu才支援這種技術。虛擬機器 v...