天天看點

Docker常用指令整理

docker基本資訊查詢

# 檢視docker版本
$docker version

# 顯示docker系統的資訊
$docker info
           

鏡像管理

查找image

從 Docker Hub 中搜尋符合條件的鏡像。

docker search [options ] term
docker search -s  django

--automated 隻列出 automated build
類型的鏡像;

--no-trunc 可顯示完整的鏡像描述;

-s  列出收藏數不小于的鏡像。
           

上傳image

從 Docker Hub 中拉取或者更新指定鏡像。

docker pull [-a ] [user/ ]name[:tag ]
docker pull laozhu/telescope:latest

-a 拉取所有 tagged 鏡像 。
           

将鏡像推送至遠端倉庫

docker push name[:tag ]
docker push laozhu/nginx:latest
           

将鏡像推送至遠端倉庫,預設為 Docker Hub 。

列出本地所有鏡像

docker images [options ] [name]

列出本地所有鏡像。其中 [name] 對鏡像名稱進行關鍵詞查詢。

-a 列出所有鏡像(含過程鏡像);

-f 過濾鏡像,如: -f ['dangling=true'] 隻列出滿足
dangling=true 條件的鏡像;

--no-trunc 可顯示完整的鏡像ID;

-q 僅列出鏡像ID。

--tree 以樹狀結構列出鏡像的所有送出曆史。
           

删除image

docker rmi [options ] <image>  [image...]
docker rmi nginx:latest postgres:latest python:latest

從本地移除一個或多個指定的鏡像。

-f 強行移除該鏡像,即使其正被使用;

--no-prune 不移除該鏡像的過程鏡像,預設移除。
           

儲存/加載鏡像

docker save
docker save -i "debian.tar"
docker save > "debian.tar"
-o "debian.tar" 指定儲存的鏡像歸檔。
           

将指定鏡像儲存成 tar 歸檔檔案, docker load 的逆操作。儲存後再加載(saved-loaded)的鏡像不會丢失送出曆史和層,可以復原。

docker load
docker load [options]
docker load < debian.tar
docker load -i "debian.tar"
-i "debian.tar" 指定載入的鏡像歸檔。
           

從 tar 鏡像歸檔中載入鏡像, docker save 的逆操作。儲存後再加載(saved-loaded)的鏡像不會丢失送出曆史和層,可以復原。

導出/導入鏡像

docker export
docker export <container>
docker export nginx- > export.tar
           

将指定的容器儲存成 tar 歸檔檔案, docker import 的逆操作。導出後導入(exported-imported))的容器會丢失所有的送出曆史,無法復原。

docker import
docker import url|-  [repository[:tag ]]
cat export.tar  "p">| docker import - imported-nginx:latest
docker import http://example.com/export.tar
           

從歸檔檔案(支援遠端檔案)建立一個鏡像, export 的逆操作,可為導入鏡像打上标簽。導出後導入(exported-imported))的容器會丢失所有的送出曆史,無法復原。

檢視指定鏡像的建立曆史

docker history  [options] <image>

--no-trunc 顯示完整的送出記錄;
-q 僅列出送出記錄ID。
           

容器管理

檢視容器

docker ps


-a 列出所有容器(含沉睡鏡像);

--before="nginx" 列出在某一容器之前建立的容器,接受容器名稱和ID作為參數;

--since="nginx" 列出在某一容器之後建立的容器,接受容器名稱和ID作為參數;

-f [exited=<int>] 列出滿足
exited=<int> 條件的容器;

-l 僅列出最新建立的一個容器;

--no-trunc 顯示完整的容器ID;

-n= 列出最近建立的個容器;

-q 僅列出容器ID;

-s 顯示容器大小。
           

删除容器

docker rm [options ] <container>  [container...]
docker rm nginx- nginx- db- db-
sudo docker rm -l /webapp/redis
#删除所有容器
docker rm $(docker ps -a -q)


-f 強行移除該容器,即使其正在運作;

-l 移除容器間的網絡連接配接,而非容器本身;

-v 移除與容器關聯的空間。
           

殺死容器

docker kill  [options ] <container>  [container...]

殺死一個或多個指定容器程序。

-s "KILL" 自定義發送至容器的信号。
           

啟動、停止和重新開機一個或多個指定容器

docker stop <容器名orID>
docker start <容器名orID>
docker restart<容器名orID>

-a 待完成

-i 啟動一個容器并進入互動模式;

-t  停止或者重新開機容器的逾時時間(秒),逾時後系統将殺死程序。
停止、啟動、殺死一個容器
           

啟動一個新的容器

注意:此指令比較常用

Usage: docker run [OPTIONS] IMAGE[:TAG] [COMMAND] [ARG...]   
-a=map[]: 附加标準輸入、輸出或者錯誤輸出  
-c=: 共享CPU格式(相對重要)  
-cidfile="": 将容器的ID辨別寫入檔案  
-d=false: 分離模式,在背景運作容器,并且列印出容器ID  
-e=[]:設定環境變量  
-h="": 容器的主機名稱  
-i=false: 保持輸入流開放即使沒有附加輸入流  
-privileged=false: 給容器擴充的權限  
-m="": 記憶體限制 (格式:<number><optional unit>, unit機關 = b, k, m or g)  
-n=true: 允許鏡像使用網絡  
-p=[]: 比對鏡像内的網絡端口号  
-rm=false:當容器退出時自動删除容器 (不能跟 -d一起使用)  
-t=false: 配置設定一個僞造的終端輸入  
-u="": 使用者名或者ID  
-dns=[]: 自定義容器的DNS伺服器  
-v=[]: 建立一個挂載綁定:[host-dir]:[container-dir]:[rw|ro].如果容器目錄丢失,docker會建立一個新的卷  
-volumes-from="": 挂載容器所有的卷  
-entrypoint="": 覆寫鏡像設定預設的入口點  
-w="": 工作目錄内的容器  
-lxc-conf=[]: 添加自定義-lxc-conf="lxc.cgroup.cpuset.cpus = 0,1" 
-sig-proxy=true: 代理接收所有程序信号(even in non-tty mode)  
-expose=[]: 讓你主機沒有開放的端口  
-link="": 連接配接到另一個容器(name:alias)  
--name="": 配置設定容器的名稱,如果沒有指定就會随機生成一個  
-P=false: Publish all exposed ports to thehost interfaces 公布所有顯示的端口主機接口
           

暫停容器/恢複容器

暫停某一容器的所有程序。

恢複某一容器的所有程序。

倉庫管理

docker login
[email protected]:~# docker login
Username: username
Password: ****
Email: [email protected].com
Login Succeeded
           

按步驟輸入在 Docker Hub 注冊的使用者名、密碼和郵箱即可完成登入。

docker logout
           

運作後從指定伺服器登出,預設為官方伺服器。

送出容器鏡像(帶唯一編号進行送出)