docker學習-常用命令1
一、容器管理
1.1 Docker start/stop/restart/rm 命令
實例:啟動|停止|重啟|刪除 容器mydb01
# docker start|stop|restart|rm mydb01
1.2 Docker kill 命令,殺掉一個運行中的容器。
OPTIONS說明:
-s :向容器發送一個信號
例:殺掉運行中的容器mydb01
# docker kill -s KILL mydb01
1.3 Docker rm 命令,刪除一個或多少容器
OPTIONS說明:
-f :通過SIGKILL信號強制刪除一個運行中的容器
-l :移除容器間的網絡連接,而非容器本身
-v :-v 刪除與容器關聯的卷
實例:強制刪除容器db01、db02
# docker rm -f db01 db02
移除容器nginx01對容器db01的連接,連接名db_web
# docker rm -l db_web
刪除容器nginx,並刪除容器掛載的數據卷
# docker rm -v nginx
1.4 Docker pause/unpause 命令,暫停容器中所有的進程/恢復容器中所有的進程。
實例:暫停數據庫容器db提供服務。
# docker pause db
恢復數據庫容器db提供服務。
# docker unpause db
1.5 Docker create 命令,創建一個新的容器但不啟動它
實例:使用docker鏡像nginx:latest創建一個容器,並將容器命名為nginx_test
# docker create --name nginx_test nginx:latest
1.6 Docker exec 命令,在運行的容器中執行命令
PTIONS說明:
-d :分離模式: 在後臺運行
-i :即使沒有附加也保持STDIN 打開
-t :分配一個偽終端
例:在容器nginx中以交互模式執行容器內/root/test.sh腳本
# docker exec -it nginx /bin/sh /root/test.sh
在容器nginx中開啟一個交互模式的終端
# docker exec -it nginx /bin/bash
二、容器操作
2.1 Docker ps 命令,列出容器
OPTIONS說明:
-a :顯示所有的容器,包括未運行的。
-f :根據條件過濾顯示的內容。
--format :指定返回值的模板文件。
-l :顯示最近創建的容器。
-n :列出最近創建的n個容器。
--no-trunc :不截斷輸出。
-q :靜默模式,只顯示容器編號。
-s :顯示總的文件大小。
實例:列出所有在運行的容器信息。
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
022a9bc6d31f redis:3.2 "docker-entrypoint.s…" 2 hours ago Up About an hour 0.0.0.0:6379->6379/tcp dnmp_redis
列出最近創建的5個容器信息
# docker ps -n 5
列出所有創建的容器ID。
# docker ps -aq
2.2 Docker inspect 命令,獲取容器/鏡像的元數據。
OPTIONS說明:
-f :指定返回值的模板文件。
-s :顯示總的文件大小。
--type :為指定類型返回JSON。
實例:獲取鏡像mysql:5.7的元信息。
# docker inspect mysql:5.7
獲取正在運行的容器mymysql的 IP
# docker inspect --format=‘{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}‘ mymysql
192.168.0.210
2.3 Docker top 命令,查看容器中運行的進程信息,支持 ps 命令參數
容器運行時不一定有/bin/bash終端來交互執行top命令,而且容器還不一定有top命令,可以使用docker top來實現查看容器中正在運行的進程。
實例:查看容器mysql的進程信息。
# docker top mysql
UID PID PPID C STIME TTY TIME CMD
999 40347 40331 18 00:58 ? 00:00:02 mysqld
查看所有運行容器的進程信息。
# for i in `docker ps |grep Up|awk ‘{print $1}‘`;do echo \ &&docker top $i; done
2.4 Docker attach 命令,連接到正在運行中的容器。
要attach上去的容器必須正在運行,可以同時連接上同一個container來共享屏幕(與screen命令的attach類似)。
如輸出nginx的access.log日誌,CTRL-C不僅會導致退出容器,而且還stop了。這不是我們想要的,detach的意思按理應該是脫離容器終端,但容器依然運行。好在attach是可以帶上--sig-proxy=false來確保CTRL-D或CTRL-C不會關閉容器。
實例:容器nginx將訪問日誌指到標準輸出,連接到容器查看訪問信息。
# docker attach --sig-proxy=false nginx
112.58.201.12 - - [18/Jul/2018:06:14:06 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/7.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2454.93 Safari/537.36" "-"
2.5 Docker events 命令,從服務器獲取實時事件
OPTIONS說明:
-f :根據條件過濾事件;
--since :從指定的時間戳後顯示所有事件;
--until :流水時間顯示到指定的時間為止;
實例:顯示docker 鏡像為mysql:5.7 2019年1月02日後的相關事件。如果指定的時間是到秒級的,需要將時間轉成時間戳。
# docker events -f "image"="mysql:5.7" --since="2019-01-02"
2.6 Docker logs 命令,獲取容器的日誌
OPTIONS說明:
-f : 跟蹤日誌輸出
--since :顯示某個開始時間的所有日誌
-t : 顯示時間戳
--tail :僅列出最新N條容器日誌
實例:跟蹤查看容器nginx的日誌輸出。
# docker logs -f nginx
112.58.201.12 - - [18/Jul/2018:06:14:06 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/7.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2454.93 Safari/537.36" "-"
查看容器nginx從2019年1月2日後的最新10條日誌。
# docker logs --since="2019-01-02" --tail=10 nginx
2.7 Docker wait 命令,阻塞運行直到容器停止,然後打印出它的退出代碼。
實例
# docker wait CONTAINER
2.8 Docker export 命令,將文件系統作為一個tar歸檔文件導出到STDOUT。
OPTIONS說明:
-o :將輸入內容寫到文件。
實例
將id為022a9bc6d31f的容器按日期保存為tar文件。
# docker export -o redis-`date +%Y%m%d`.tar 022a9bc6d31f
2.9 Docker port 命令,列出指定的容器的端口映射,或者查找將PRIVATE_PORT NAT到面向公眾的端口。
實例:查看容器nginx的端口映射情況。
# docker port nginx
3306/tcp -> 0.0.0.0:80
docker學習-常用命令1