1. 程式人生 > >docker學習-常用命令1

docker學習-常用命令1

返回值 ipa like 輸出 ons 時間戳 win proxy 發送

一、容器管理

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