1. 程式人生 > 實用技巧 >Docker-基礎002-常用命令

Docker-基礎002-常用命令

Docker命令

1. 檢視docker版本

docker version

顯示客戶端和服務端的各種版本資訊

2. 檢視docker資訊

docker info

顯示更加詳細的docker資訊, 比如容器和映象的個數, 系統核心, 網路連線, CPU等等, 可以理解為虛擬機器的系統資訊

3. 檢視幫助命令

# 檢視docker總共有那些命令即命令簡介
docker --help
# 檢視具體命令的可選引數等用法
docker 命令名稱 --help

映象命令(image)

1. 檢視本地的所有映象

docker images

可選引數為:

(root@Aliyun-Alex:~)# docker images --help
Usage:    docker images [OPTIONS] [REPOSITORY[:TAG]]
List images
Options:
  
-a, --all Show all images (default hides intermediate images) --digests Show digests -f, --filter filter Filter output based on conditions provided --format string Pretty-print images using a Go template --no-trunc Don't truncate output -q, --quiet Only show numeric IDs

2. 搜尋docker hub上的映象

docker search image_name
# 例如:
docker search mysql

使用過濾引數

如只想要stars大於3000的結果:

docker search mysql -f=stars=3000

3. 從docker hub下載映象

# 下載最新版
docker pull mysql
# 下載指定版本
docker pull mysql:5.7

4. 刪除本地映象

docker rmi -f 映象名稱或者ID   # 如 docker rmi mysql
docker rmi -f 映象名稱或者ID 映象名稱或者ID 映象名稱或者ID  # 刪除多個映象用空格隔開
docker rmi 
-f $(docker images -q) # 將括號中搜索到的映象全部刪除

容器命令(container)

有了映象才能建立容器, 可以理解為: 映象就是類, 容器就是類的例項物件

這裡我們先下載centos映象:docker pull centos

1. 建立容器並啟動

docker run [可選引數] image

# 常用引數
--name="容器名稱"  給容器命名, 如centos01, centos02等等
-d                後臺方式執行容器
-it               使用互動方式執行, 進入容器終端
-p                指定容器的埠
    -p 主機埠:容器埠
    -p ip:主機埠:容器埠
    -p 容器埠
    容器埠
-P                隨機指定埠

測試啟動並進入centos容器

docker run -it centos

可以看到主機名稱變成了一串數字(這串數字就是容器的ID), 路徑也變成了根目錄/, 這就是進入了centos容器

但是由於centos映象只是留下了centos系統最基礎的必需資源, 所以體積小, 但是功能可能不太完善, 一些命令也沒有, 如vim, wget等

2. 退出容器

exit  # 停止容器的執行
Ctrl+p+q # 不停止容器
docker attach # 容器ID, 進入執行中容器的終端

3. 檢視正在執行的容器

docker ps
docker ps -a  # 檢視所有容器, 包括已經停止運行了的容器
docker ps -n=? # 顯示最近的n個容器
docker ps -q # 只顯示容器編號

4. 刪除容器

docker rm -f 容器名稱或者ID   # 如 docker rm mysql
docker rm -f 容器名稱或者ID 容器名稱或者ID 容器名稱或者ID  # 刪除多個容器用空格隔開
docker rm -f $(docker ps -q)  # 將括號中搜索到的容器全部刪除

5. 啟動和停止容器

docker start 容器id  # 啟動停止的容器
docker restart 容器id  # 重啟容器
docker stop 容器id  # 停止正在執行的容器
docker kill 容器id  # 強制殺死正在執行的容器

6. 後臺啟動容器

docker run -d 映象名
# 如 docker run -d centos

該命令會返回一個容器ID, 但是執行docker ps時發現該容器並不在執行, 而是剛啟動就停止了

原因是因為docker容器後臺執行時, 必須要有一個對應的前臺程序, 若這裡加上(-it)那麼就會啟動一個前臺程序, 若沒有前臺程序那麼docker的機制就會自動把這個容器停止, 可以理解為垃圾回收

7. 檢視日誌

docker log -tf 容器ID


Usage:    docker logs [OPTIONS] CONTAINER

Fetch the logs of a container

Options:
      --details        Show extra details provided to logs
  -f, --follow         Follow log output
      --since string   Show logs since timestamp (e.g. 2013-01-02T13:23:37) or relative (e.g. 42m for 42 minutes)
      --tail string    Number of lines to show from the end of the logs (default "all")
  -t, --timestamps     Show timestamps
      --until string   Show logs before a timestamp (e.g. 2013-01-02T13:23:37) or relative (e.g. 42m for 42 minutes)

8. 檢視容器中的程序資訊

docker top 容器ID

9. 檢視容器的資訊

docker inspect 容器ID

10. 進入正在執行的容器

# 方式一
docker exec -it 容器ID /bin/bash

# 方式二
docker attach 容器ID

上述兩者命令的區別是:

docker exec : 進入容器後開啟一個新的終端

docker attach : 進入容器正在執行的終端, 不會開啟新的終端

11. 從容器內拷貝檔案到主機上

docker cp 容器ID:要拷貝的檔案路徑 本機目的路徑
# 如: docker cp 16bd39b136a3:root/copy_test.py /home

12. 將容器打包成新的映象

docker commit -a "作者資訊" -m "提交備註資訊" 容器ID 目標映象名:[TAG]