Docker 常用命令 login/logout docker login [OPTIONS] [SERVER] 登錄到Docker鏡像倉庫,預設為Docker Hub。 docker logout [OPTIONS] [SERVER] 退出Docker鏡像倉庫。 OPTIONS 說明 u:登錄用戶 ...
Docker 常用命令
login/logout
- docker login [OPTIONS] [SERVER] 登錄到Docker鏡像倉庫,預設為Docker Hub。
- docker logout [OPTIONS] [SERVER] 退出Docker鏡像倉庫。
OPTIONS 說明
- -u:登錄用戶名
- -p:登錄密碼
示例
- docker login -u 用戶名 -p 密碼 登錄到Docker Hub。
- docker logout 退出Docker Hub。
pull
docker pull 從鏡像倉庫中拉取或者更新指定鏡像
語法
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
OPTIONS 說明
- -a:拉取所有 tagged 鏡像
--disable-content-trust:忽略鏡像的校驗,預設開啟
示例
docker pull java
push
docker push 將本地鏡像上傳至鏡像倉庫,需要先登錄。
語法
docker push [OPTIONS] NAME[:TAG]
OPTIONS 說明
--disable-content-trust:忽略鏡像的校驗,預設開啟
示例
docker push myapache:v1
search
docker search 從鏡像倉庫查找鏡像
語法
docker search [OPTIONS] TERM
OPTIONS 說明
- --automated :只列出 automated build類型的鏡像;
- --no-trunc :顯示完整的鏡像描述;
-s :列出收藏數不小於指定值的鏡像。
示例
docker search -s 10 java
images
docker images 列出本地鏡像。
語法
docker images [OPTIONS] [REPOSITORY[:TAG]]
OPTIONS 說明
- -a :列出本地所有的鏡像(含中間映像層,預設情況下,過濾掉中間映像層);
- --digests :顯示鏡像的摘要信息;
- -f :顯示滿足條件的鏡像;
- --format :指定返回值的模板文件;
- --no-trunc :顯示完整的鏡像信息;
-q :只顯示鏡像ID;
示例
docker images centos
rmi
docker rmi 刪除本地一個或多個鏡像
語法
docker rmi [OPTIONS] IMAGE [IMAGE...]
OPTIONS 說明
- -f :強制刪除;
--no-prune :不移除該鏡像的過程鏡像,預設移除;
示例
docker rmi -f java/jre1.8.0:201
tag
docker tag 標記本地鏡像
語法
docker tag [OPTIONS] IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]
示例
docker tag ubuntu:15.10 runoob/ubuntu:v3
build
docker build 使用Dockerfile構建鏡像。
語法
docker build [OPTIONS] PATH | URL | -
OPTIONS 說明
- --build-arg=[] :設置鏡像創建時的變數;
- --cpu-shares :設置 cpu 使用權重;
- --cpu-period :限制 CPU CFS周期;
- --cpu-quota :限制 CPU CFS配額;
- --cpuset-cpus :指定使用的CPU id;
- --cpuset-mems :指定使用的記憶體 id;
- --disable-content-trust :忽略校驗,預設開啟;
- -f :指定要使用的Dockerfile路徑;
- --force-rm :設置鏡像過程中刪除中間容器;
- --isolation :使用容器隔離技術;
- --label=[] :設置鏡像使用的元數據;
- -m :設置記憶體最大值;
- --memory-swap :設置Swap的最大值為記憶體+swap,"-1"表示不限swap;
- --no-cache :創建鏡像的過程不使用緩存;
- --pull :嘗試去更新鏡像的新版本;
- --quiet, -q :安靜模式,成功後只輸出鏡像 ID;
- --rm :設置鏡像成功後刪除中間容器;
- --shm-size :設置/dev/shm的大小,預設值是64M;
- --ulimit :Ulimit配置。
- --tag, -t: 鏡像的名字及標簽,通常 name:tag 或者 name 格式;可以在一次構建中為一個鏡像設置多個標簽。
--network: 預設 default。在構建期間設置RUN指令的網路模式
示例
docker build -t runoob/ubuntu:v1 .
history
docker history:查看指定鏡像的創建歷史。
OPTIONS 說明
- -H :以可讀的格式列印鏡像大小和日期,預設為true;
- --no-trunc :顯示完整的提交記錄;
-q :僅列出提交記錄ID。
示例
docker history java/jre1.8.0:201
save/load
- docker save 將指定鏡像保存成 tar 歸檔文件
docker load 恢復指定tar文件至docker列表
語法
docker save [OPTIONS] IMAGE [IMAGE...]
OPTIONS 說明
-o :輸出到的文件。
示例
docker save -o my_ubuntu_v3.tar runoob/ubuntu:v3
export/import
- docker export 打包容器
docker import 導入鏡像
語法
docker export [OPTIONS] CONTAINER
OPTIONS 說明
-o :輸出到的文件。
示例
- docker export container_id > /home/alic/ubuntu-purge.tar.gz
sudo docker import - test/ubuntu:v1.0
run
docker run 創建新容器並啟動
語法
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
OPTIONS 說明
- -a stdin: 指定標準輸入輸出內容類型,可選 STDIN/STDOUT/STDERR 三項;
- -d: 後臺運行容器,並返回容器ID;
- -i: 以交互模式運行容器,通常與 -t 同時使用;
- -p: 埠映射,格式為:主機埠:容器埠
- -t: 為容器重新分配一個偽輸入終端,通常與 -i 同時使用;
- --name="nginx-lb": 為容器指定一個名稱;
- --dns 8.8.8.8: 指定容器使用的DNS伺服器,預設和宿主一致;
- --dns-search example.com: 指定容器DNS搜索功能變數名稱,預設和宿主一致;
- -h "mars": 指定容器的hostname;
- -e username="ritchie": 設置環境變數;
- --env-file=[]: 從指定文件讀入環境變數;
- --cpuset="0-2" or --cpuset="0,1,2": 綁定容器到指定CPU運行;
- -m :設置容器使用記憶體最大值;
- --net="bridge": 指定容器的網路連接類型,支持 bridge/host/none/container: 四種類型;
- --link=[]: 添加鏈接到另一個容器;
--expose=[]: 開放一個埠或一組埠;
示例
docker run --name mynginx -d nginx:latest /bin/bash
start/stop/restart
- docker start 啟動一個或多個已經被停止的容器
- docker stop 停止一個運行中的容器
docker restart 重啟容器
語法
- docker start [OPTIONS] CONTAINER [CONTAINER...]
- docker stop [OPTIONS] CONTAINER [CONTAINER...]
docker restart [OPTIONS] CONTAINER [CONTAINER...]
示例
- docker start mynginx
- docker stop mynginx
docker restart mynginx
create
docker create 創建容器但不啟動
語法
docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
示例
docker create --name myrunoob nginx:latest
exec
docker exec 在運行的容器中執行命令
語法
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
OPTIONS 說明
- -d :分離模式: 在後臺運行
- -i :即使沒有附加也保持STDIN 打開
-t :分配一個偽終端
示例
docker exec -i -t mynginx /bin/bash
commit
docker commit 從容器創建新鏡像。
語法
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
OPTIONS 說明
- -a :提交的鏡像作者;
- -c :使用Dockerfile指令來創建鏡像;
- -m :提交時的說明文字;
-p :在commit時,將容器暫停。
示例
docker commit -a "runoob.com" -m "my apache" a404c6c174a2 mymysql:v1
cp
docker cp 用於容器與主機之間的數據拷貝
語法
- docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH
OPTIONS 說明
-L:保持源目標中的鏈接
示例
docker cp /www/runoob 96f7f14e99ab:/www/ 將主機/www/runoob目錄拷貝到容器96f7f14e99ab的/www目錄下
diff
docker diff 檢查容器文件結構的修改
語法
docker diff [OPTIONS] CONTAINER
示例
docker diff mymysql
kill
docker kill 殺掉運行中的容器
語法
docker kill [OPTIONS] CONTAINER [CONTAINER...]
OPTIONS 說明
-s :向容器發送一個信號
示例
docker kill -s KILL mynginx
pause/unpause
- docker pause 暫停容器中所有的進程。
docker unpause 恢復容器中所有的進程。
語法
- docker pause [OPTIONS] CONTAINER [CONTAINER...]
docker unpause [OPTIONS] CONTAINER [CONTAINER...]
示例
- docker pause db01
docker unpause db01
ps
docker ps 列出容器
語法
docker ps [OPTIONS]
OPTIONS 說明
- -a :顯示所有的容器,包括未運行的。
- -f :根據條件過濾顯示的內容。
- --format :指定返回值的模板文件。
- -l :顯示最近創建的容器。
- -n :列出最近創建的n個容器。
- --no-trunc :不截斷輸出。
- -q :靜默模式,只顯示容器編號。
-s :顯示總的文件大小。
示例
docker ps -n 5 列出最近創建的5個容器信息
top
docker top 查看容器中運行的進程信息,支持 ps 命令參數
語法
docker top [OPTIONS] CONTAINER [ps OPTIONS]
示例
docker top mymysql
attach
docker attach 連接正在運行的容器
語法
docker attach [OPTIONS] CONTAINER
示例
docker attach --sig-proxy=false mynginx
說明
要attach上去的容器必須正在運行,可以同時連接上同一個container來共用屏幕(與screen命令的attach類似)。
官方文檔中說attach後可以通過CTRL-C來detach,但實際上經過我的測試,如果container當前在運行bash,CTRL-C自然是當前行的輸入,沒有退出;如果container當前正在前臺運行進程,如輸出nginx的access.log日誌,CTRL-C不僅會導致退出容器,而且還stop了。這不是我們想要的,detach的意思按理應該是脫離容器終端,但容器依然運行。好在attach是可以帶上--sig-proxy=false來確保CTRL-D或CTRL-C不會關閉容器。
inspect
docker inspect 獲取容器/鏡像的元數據
語法
docker inspect [OPTIONS] NAME|ID [NAME|ID...]
OPTIONS 說明
- -f :指定返回值的模板文件。
- -s :顯示總的文件大小。
--type :為指定類型返回JSON。
示例
docker inspect mysql:5.6
events
docker events 從伺服器獲取實時事件
語法
docker events [OPTIONS]
OPTIONS 說明
- -f :根據條件過濾事件;
- --since :從指定的時間戳後顯示所有事件;
--until :流水時間顯示到指定的時間為止;
示例
docker events --since="1467302400" 顯示docker 2016年7月1日後的所有事件
logs
docker logs 獲取容器的日誌
語法
docker logs [OPTIONS] CONTAINER
OPTIONS 說明
- -f : 跟蹤日誌輸出
- --since :顯示某個開始時間的所有日誌
- -t : 顯示時間戳
--tail :僅列出最新N條容器日誌
示例
docker logs -f mynginx 跟蹤查看容器mynginx的日誌輸出
wait
docker wait 阻塞運行直到容器停止,然後列印出它的退出代碼
語法
docker wait [OPTIONS] CONTAINER [CONTAINER...]
示例
docker wait CONTAINER
port
docker port 列出指定的容器的埠映射,或者查找將PRIVATE_PORT NAT到面向公眾的埠
語法
docker port [OPTIONS] CONTAINER [PRIVATE_PORT[/PROTO]]
示例
docker port mymysql
info
- docker info 顯示Docker系統信息,包含鏡像和容器數等。
Containers: 3
Running: 0
Paused: 0
Stopped: 3
Images: 23
Server Version: 18.09.0
Storage Driver: overlay2
Backing Filesystem: xfs
Supports d_type: true
Native Overlay Diff: true
...
version
- docker version 顯示Docker版本信息。
Client:
Version: 18.09.0
API version: 1.39
Go version: go1.10.4
Git commit: 4d60db4
Built: Wed Nov 7 00:48:22 2018
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 18.09.0
API version: 1.39 (minimum version 1.12)
Go version: go1.10.4
Git commit: 4d60db4
Built: Wed Nov 7 00:19:08 2018
OS/Arch: linux/amd64
Experimental: false