之前寫了一篇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
1entrypoint和cmd區別: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的引數。
執行並進入容器
1注意:attach容器之前必須start容器docker start ubuntu
2 docker attach ubuntu
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...