Docker 的常用命令

幫助命令

docker version
docker info
docker xxx --help
systemctl start docker

官方命令集

Reference documentation | Docker Documentation

鏡像命令

查看所有本地的主機上的鏡像

docker images
-a # 列出所有鏡像
-q # 只顯示鏡像的id

搜索鏡像

docker search mysql
-filteSTARS=3000 # 搜索出來的鏡像就是STARS大於3000的

下載鏡像

docker pull mysql
using default tag: latest # 如果不寫tag,默認是latest
xxx: Pull complete # 分層下載,docker image的核心 聯合文件系統
...
docker.io/library/mysql: latest # 真實地址

// same 等價
// docker pull mysql = docker pull docker.io/library/mysql: latest

[optional]:
-a
-q

刪除鏡像

docker rmi -f 鏡像id # 刪除指定的鏡像
docker rmi -f 鏡像id 鏡像id 鏡像id # 刪除多個鏡像
docker rmi -f $(docker images -aq) # 刪除全部的鏡像

容器指令

說明:我們有了鏡像才可以創建容器,linux,下載一個 centos 鏡像來測試

docker pull centos

新建容器並啟動

docker run [可選參數] image

# 參數說明
--name="Name" #容器名字 tomcat01 tomcat02 用來區分容器
-d                           #後台方式運行
-it                           #使用交付方式運行,進入容器查看內容
-p                           #指定容器的端口 -p 8080:8080
    -p ip:主機端口:容器端口
    -p 主機端口:容器端口 #(常用)
    -p 容器端口
    容器端口
-P                           #隨機指定端口
--name                  #給容器命名

啟動並進入容器

docker run -it centos /bin/bash
[root@e4eccc01b495] ls # 查看容器內的centos

列出所有的運行的容器

docker ps  # 列出當前正在運行

[optional]
-a # 列出當前正在運行+帶出歷史運行過的容器
-n=? # 顯示最近創建的容器
-q # 只顯示容器的編號

退出容器

exit # 直接容器停止並退出
ctrl + P + Q # 容器不停止退出

刪除容器

docker rmi 容器id # 刪除指定的容器,不能刪除正在運行的容器,如果要強制刪除 rm -f
docker rmi -f $(docker ps -aq) # 刪除全部的鏡像
docker ps -a -q|xargs docker rm # 刪除所有的容器

啟動和停止容器的操作

docker start 容器id # 啟動容器
docker restart 容器id # 重啟容器
docker stop 容器id # 停止當前正在運行的容器
docker kill 容器id # 強制停止當前容器

常用其他命令

後台啟動容器

docker run -d 鏡像名
docker run -d centos

問題:docker ps發現 centos 停止了

常見的坑,docker容器使用後台運行,就必須要有一個前台流程,docker發現沒有應用,就會自動停止。 容器啟動後,發現自己沒有提供服務,就會立刻停止,就是沒有程序了。

查看日誌

自己編寫一段shell腳本

docker run -d centos /bin/sh -c "while true;do echo kuangshen;sleep 1;done"

顯示日誌

docker logs -tf --tail [number] 容器id

[optional]
-tf # 顯示日誌
--tail number # 要顯示日誌條數

查看容器中進行信息

docker top 容器id

# ppid是父進程id,pid是進程id

查看鏡像的元數據

docker inspect 容器id

進入當前正在運行的容器

我們通常容器都是使用後台方式運行的,需要進入容器,修改一些配置

方法1:進入容器後開啟一個新的終端,可以在裡面操作(常用)

docker exec -it 容器id bashShell

方法2:進入容器正在執行的終端,不會啟動新的進程

docker attach 容器id

從容器內拷貝文件到主機上

docker cp 容器id:容器內路徑 [space] 目的地主機路徑

拷貝是一個手動過程,未來使用 -v 卷的技術,可以實現

小結