操作docker容器,和操作linux差不多,都是使用命令行操作。不同的是,操作docker需要使用docker的命令。docker的命令和linux的命令很多相似的,也有一些不同。廢話不多說,開始學習。docker命令分爲鏡像相關,容器生命週期相關,容器操作相關,倉庫相關等一系列命令。是用docker命令時,前要加上 docker ,比如查看docker版本,在終端輸入 docker version
版本相關
-
version 查看docker的版本,能看到docker的client和server的版本
-
info 顯示 Docker 系統信息,包括鏡像和容器數。
可以看到,有兩個容器,一個運行中一個停止。本地還有兩個鏡像
本地鏡像相關操作
-
images 查看本地所有鏡像
rmi 刪除本地一個或多少鏡像。這個命令和linux的rm命令很像,可以使用 -f 強制刪除
-
tag 爲本地鏡像打一個標籤,可以理解爲重命名。
可以看到,使用tag命令給mysql加了一個標籤,兩個鏡像的id是相同的,說明還是同一個鏡像。使用rmi命令刪除一個,另一個不受影響。
build 命令用於使用 Dockerfile 創建鏡像。這個命令比較複雜,有很多參數,而且需要配合Dockerfile文件使用
-
history 查看指定鏡像的創建歷史。
- -H :以可讀的格式打印鏡像大小和日期,默認爲true;
- --no-trunc :顯示完整的提交記錄;
- -q :僅列出提交記錄ID。
-
save 將本地的容器保存爲一個文件。
已經把本地的redis 鏡像保存到了當前目錄 -
load 導入使用 save 命令導出的鏡像。
我們先把本地的redis鏡像刪除,再通過load命令把剛纔導出的redis鏡像再導入 -
import 也是從本地文件導入鏡像。和load 不同的是,import 命令需要指定導入後的鏡像的name和tag
先把原有的redis鏡像刪掉,再使用import命名導入鏡像,並指定name和tag。一般import命令配合export命令使用
容器倉庫相關
-
search 在遠程倉庫中搜索相關的鏡像。
在遠程倉庫中搜索mysql相關的鏡像 pull 從遠程倉庫拉取鏡像到本地,比如拉取mysql命令,
docker pull mysql
容器生命週期相關
-
run 創建一個新的容器並運行;run命令有很多參數,挑幾個常用的介紹一個
- -d: 後臺運行容器,並返回容器ID;
- -i: 以交互模式運行容器,通常與 -t 同時使用;
- -t: 爲容器重新分配一個僞輸入終端,通常與 -i 同時使用;
- --name="nginx-lb": 爲容器指定一個名稱;注意這個前面是 --
- -e: 設置環境變量;在用docker啓動mysql的時候,會用到環境變量設置mysql的密碼
- -P: 隨機端口映射,容器內部端口隨機映射到主機的高端口,大寫的P;
- -p: 指定端口映射,格式爲:主機(宿主)端口:容器端口;比如使用docker運行nginx時,將容器的nginx80端口映射到主機的8080端口;-p 8080:80
- -m :設置容器使用內存最大值;
- --volume , -v: 將主機上的目錄掛載到容器內;格式爲:主機目錄:容器內的目錄
以運行mysql爲例,
運行一個mysql容器,重命名爲my_mysql,將容器的3306端口映射到主機的3366端口,並將mysql的存儲目錄/var/lib/mysql 掛載到用戶目錄的mysql_data目錄下
start 啓動一個容器,可以使用容器的id也可以使用容器的name
stop 停止一個容器
restart 重啓一個容器
kill 殺死一個容器,和linux的kill命令很像,可以使用容器的name操作
pause 暫停容器中所有的進程。
unpause 恢復容器暫停的進程。
create 創建一個容器,但是不啓動這個容器
-
exec 在運行的容器中執行命令。可以看做是進入到這個容器中。
- -d :分離模式: 在後臺運行
- -i :默認打開,沒有附加也保持STDIN 打開
- -t :分配一個僞終端
使用命令docker exec -it redis
進入name爲redis 的容器中
容器操作相關
-
ps 列出當前機器上的容器
- -a:列出所有的容器,包括沒有運行的容器
- -f :根據條件過濾顯示的內容
- -n :列出最近創建的n個容器
- -q :靜默模式,只顯示容器編號
top 查看容器中運行的進程信息,支持 ps 命令參數。
-
logs 獲取容器的日誌
- -f : 跟蹤日誌輸出,和linux的 tail 的-f效果相同
- --since :顯示某個開始時間的所有日誌
- -t : 顯示時間戳
- --tail :僅列出最新N條容器日誌
**port ** 列出指定的容器的端口映射,或者查找將PRIVATE_PORT NAT到面向公衆的端口。
export 將容器導出爲一個文件,和save命令相似,但是save命令操作的是鏡像,export操作的是容器。save保存的文件沒有丟失鏡像的歷史,可以回滾到之前。export 保存的文件再導入時會丟失鏡像所有的歷史,所以無法進行回滾
使用命令docker export name > filename
-
commit 從指定容器創建一個新的鏡像。
- -a :提交的鏡像作者
- -c :使用Dockerfile指令來創建鏡像
- -m :提交時的說明文字
- -p :在commit時,將容器暫停
將mariadb 容器生成一個新的鏡像
cp 在宿主機和容器之間複製文件。
將 a.txt 複製到 name爲 mysql 容器的 var 目錄docker cp a.txt redis:/var