Docker 常用命令總結
鏡像相關
搜索
docker search *image_name*
下載
docker pull *image_name*
查看
docker images
docker image ls
刪除
docker rmi *image_name*
docker image rm *image_name*
導出docker鏡像
docker save *image_name* > /save/image/path/name.tar.gz
導入docker鏡像
docker load < /save/image/path/name.tar.gz
提交創建的自定義的鏡像
docker commit *container_id* *鏡像名稱*
1 |
[root@c7-dev ~]# docker images |
打標簽時的注意事項:docker tag bac2 gandoufu/centos7-wget
bac2 是鏡像的id
gandoufu/centos7-wget 鏡像的名稱必須是自己的id名稱/鏡像名稱
latest 默認版本號,可以不用加
容器相關
新建容器
docker create image_name
docker create -t -i image_name bash
docker run image_name
docker run image_name /bin/echo “haha”
docker run -it -d image_name
docker run -it -d –rm –name mydo image_name
使用create創建的容器,在使用時需要先start對應的容器;
使用run創建的容器,直接運行;如果指定的image_name
不存在,則會去鏡像倉庫下載鏡像,然后根據鏡像創建容器。
參數說明:
i 進入交互模式
t 創建一個虛擬終端
d 后台運行
rm 退出后自動刪除容器
name 創建的容器使用自定義的名字
注:i和t參數一起指定(-it),在實際操作時發現只指定i參數時,attach到實例時會出現卡死的情況。
進入容器
docker attach *container_id|container_name*
根據容器的id或名字進入指定的容器;如果容器處於未運行狀態,需要先啟動容器docker start container_id
1 |
[root@c7-dev ~]# docker ps -a |
使用運行的容器執行命令
docker exec *container_id* command
1 |
[root@c7-dev ~]# docker ps |
查看容器
docker ps
docker ps -a
docker ps -aq
1 |
[root@c7-dev ~]# docker run -it -d centos bash |
停止容器
docker stop *container_id*
1 |
[root@c7-dev ~]# docker ps |
刪除容器
docker rm *container_id*
1 |
[root@c7-dev ~]# docker ps -a |
倉庫相關
登錄/退出倉庫
docker [login/logout] [倉庫地址]
1 |
[root@c7-dev ~]# docker login daocloud.io |
外部訪問容器
先下載一個training/webapp
鏡像,用於測試
1 |
[root@c7-dev ~]# docker run -d -P training/webapp python app.py |
通過webapp鏡像創建運行容器,在容器內運行一個簡單的web應用,端口為5000。
參數說明:
-P 會使用宿主機的一個隨機端口映射到容器內的5000端口;外部訪問ip+隨機端口就可以訪問容器內的外部應用
-p 指定外部端口與內部端口映射關系。外部端口:內部端口
硬件資源相關
顯示容器硬件資源使用情況
docker stats [OPTIONS] [CONTAINER...]
1 |
[root@c7-dev ~]# docker stats --no-stream |
如果不加--no-stream
參數,會實時刷新顯示資源使用情況。
更新容器的硬件資源限制
1 |
# 創建容器的時候,限制內存 |
注意:指定限制內存大小並且設置 memory-swap 值為 -1,表示容器程序使用內存受限,而 swap 空間使用不受限制(宿主 swap 支持使用多少則容器即可使用多少。如果 –memory-swap 設置小於 –memory則設置不生效,使用默認設置)。
docker run -it --rm -m 100M ubuntu-stress:latest /bin/bash
如果不添加–memory-swap選項,則表示容器中程序可以使用100M內存和100Mswap內存,默認情況下,–memory-swap 會被設置成 memory 的 2倍。-m 為物理內存上限,而 –memory-swap 則是 memory + swap 之和,當壓測值是 –memory-swap 上限時,則容器中的進程會被直接 OOM kill。
Docker命令參考表
docker命令選項列表
選項 | 說明 | 其他 |
---|---|---|
–config [string] | 客戶端本地配置文件路徑 | 默認為 ~/.docker |
-D, –debug | 啟用調試模式 | |
–help | 打印用法 | |
-H, –host list | 通過socket訪問指定的docker守護進程(服務端) | unix:// , fd:// , tcp:// |
-l, –log-level [string] | 設置日志級別 (debug 、info 、warn 、error 、fatal ) |
默認為 info |
–tls | 啟用TLS加密 | |
–tlscacert [string] | 指定信任的CA根證書路徑 | 默認為 ~/.docker/ca.pem |
–tlscert [string] | 客戶端證書路徑 | 默認為 ~/.docker/cert.pem |
–tlskey [string] | 客戶端證書私鑰路徑 | 默認為 ~/.docker/key.pem |
–tlsverify | 啟用TLS加密並驗證客戶端證書 | |
-v, –version | 打印docker客戶端版本信息 |
用於管理的子命令列表
選項 | 說明 |
---|---|
container | 管理容器 |
image | 管理鏡像 |
network | 管理容器網絡(默認為bridge、host、none三個網絡配置) |
plugin | 管理插件 |
system | 管理系統資源。其中, docker system prune 命令用於清理沒有使用的鏡像, 容器, 數據卷以及網絡 |
volume | 管理數據卷 |
swarm | 管理Swarm模式 |
service | 管理Swarm模式下的服務 |
node | 管理Swarm模式下的docker集群中的節點 |
secret | 管理Swarm模式下的敏感數據 |
stack | Swarm模式下利用compose-file管理服務 |
基礎子命令列表
選項 | 說明 |
---|---|
attach | 進入運行中的容器, 顯示該容器的控制台界面。注意, 從該指令退出會導致容器關閉 |
build | 根據 Dockerfile 文件構建鏡像 |
commit | 提交容器所做的改為為一個新的鏡像 |
cp | 在容器和宿主機之間復制文件 |
create | 根據鏡像生成一個新的容器 |
diff | 展示容器相對於構建它的鏡像內容所做的改變 |
events | 實時打印服務端執行的事件 |
exec | 在已運行的容器中執行命令 |
export | 導出容器到本地快照文件 |
history | 顯示鏡像每層的變更內容 |
images | 列出本地所有鏡像 |
import | 導入本地容器快照文件為鏡像 |
info | 顯示 Docker 詳細的系統信息 |
inspect | 查看容器或鏡像的配置信息, 默認為json數據 |
kill | -s 選項向容器發送信號, 默認為SIGKILL信號(強制關閉) |
load | 導入鏡像壓縮包 |
login | 登錄第三方倉庫 |
logout | 退出第三方倉庫 |
logs | 打印容器的控制台輸出內容 |
pause | 暫停容器 |
port | 容器端口映射列表 |
ps | 列出正在運行的容器, -a 選項顯示所有容器 |
pull | 從鏡像倉庫拉取鏡像 |
push | 將鏡像推送到鏡像倉庫 |
rename | 重命名容器名 |
restart | 重啟容器 |
rm | 刪除已停止的容器, -f 選項可強制刪除正在運行的容器 |
rmi | 刪除鏡像(必須先刪除該鏡像構建的所有容器) |
run | 根據鏡像生成並進入一個新的容器 |
save | 打包本地鏡像, 使用壓縮包來完成遷移 |
search | 查找鏡像 |
start | 啟動關閉的容器 |
stats | 顯示容器對資源的使用情況(內存、CPU、磁盤等) |
stop | 關閉正在運行的容器 |
tag | 修改鏡像tag |
top | 顯示容器中正在運行的進程(相當於容器內執行 ps -ef 命令) |
unpause | 恢復暫停的容器 |
update | 更新容器的硬件資源限制(內存、CPU等) |
version | 顯示docker客戶端和服務端版本信息 |
wait | 阻塞當前命令直到對應的容器被關閉, 容器關閉后打印結束代碼 |
daemon | 這個子命令已過期, 將在Docker 17.12之后的版本中移出, 直接使用dockerd |
run命令常用選項
選項 | 說明 |
---|---|
-d | 后台運行容器, 並返回容器ID;不指定時, 啟動后開始打印日志, Ctrl + C 退出命令同時會關閉容器 |
-i | 以交互模式運行容器, 通常與 -t 同時使用; |
-t | 為容器重新分配一個偽輸入終端, 通常與 -i 同時使用 |
–name “anyesu-container” | 為容器指定一個別名, 不指定時隨機生成 |
-h docker-anyesu | 設置容器的主機名, 默認隨機生成 |
–dns 8.8.8.8 | 指定容器使用的DNS服務器, 默認和宿主一致 |
-e docker_host=172.17.0.1 | 設置環境變量 |
–cpuset=”0-2” or –cpuset=”0,1,2” | 綁定容器到指定CPU運行 |
-m 100M | 設置容器使用內存最大值 |
–net bridge | 指定容器的網絡連接類型, 支持 bridge / host / none / container 四種類型 |
–ip 172.18.0.13 | 為容器分配固定ip(需要使用自定義網絡) |
–expose 8081 –expose 8082 | 開放一個端口或一組端口, 會覆蓋鏡像設置中開放的端口 |
-p [宿主機端口]:[容器內端口] | 宿主機到容器的端口映射, 可指定宿主機的要監聽的ip, 默認為 0.0.0.0 |
-P | 注意是大寫的, 宿主機隨機指定一組可用的端口映射容器 expose 的所有端口 |
-v [宿主機目錄路徑]:[容器內目錄路徑] | 掛載宿主機的指定目錄(或文件)到容器內的指定目錄(或文件) |
–add-host [主機名]:[ip] | 為容器hosts文件追加host, 默認會在hosts文件最后追加 [主機名]:[容器ip] |
–volumes-from [其他容器名] | 將其他容器的數據卷添加到此容器 |
–link [其他容器名]:[在該容器中的別名] | 添加鏈接到另一個容器, 在本容器hosts文件中加入關聯容器的記錄, 效果類似於 --add-host |
