原創(chuàng)文章,歡迎轉(zhuǎn)載。轉(zhuǎn)載請(qǐng)注明:轉(zhuǎn)載自IT人故事會(huì),謝謝!
原文鏈接地址:「docker實(shí)戰(zhàn)篇」python的docker-docker系統(tǒng)管理-基本命令(29)
經(jīng)常使用linux、mac的系統(tǒng)的老鐵,都習(xí)慣使用命令,要靈活的使用一種操作系統(tǒng),必須要熟悉里面的命令,并不是所有都可以進(jìn)行界面化的。來(lái)一起熟悉下docker的命令。
命令合集
管理命令:
container 管理容器
image 管理鏡像
network 管理網(wǎng)絡(luò)
node 管理Swarm節(jié)點(diǎn)
plugin 管理插件
secret 管理Docker secrets
service 管理服務(wù)
stack 管理Docker stacks
swarm 管理Swarm集群
system 查看系統(tǒng)信息
volume 管理卷
如:docker container ls 顯示所有容器
普通命令:
attach 進(jìn)入一個(gè)運(yùn)行的容器
build 從一個(gè)DockerFile構(gòu)建鏡像
commit 從容器創(chuàng)建一個(gè)鏡像
cp 從容器和主機(jī)文件系統(tǒng)之間拷貝文件
create 創(chuàng)建一個(gè)容器
diff 檢查容器文件系統(tǒng)上的更改
events 從服務(wù)器獲取實(shí)時(shí)事件
exec 在正在運(yùn)行的容器中運(yùn)行命令
export 將容器的文件系統(tǒng)導(dǎo)出為tar存檔
history 顯示鏡像的歷史記錄
images 查看鏡像列表
import 從歸檔文件中創(chuàng)建鏡像
info 顯示系統(tǒng)范圍的信息
inspect 返回Docker對(duì)象的低級(jí)信息
kill kill運(yùn)行中的容器
load 從存檔或者STDIN加載鏡像
login 登陸docker鏡像倉(cāng)庫(kù)
logout 退出docker鏡像倉(cāng)庫(kù)
logs 獲取一個(gè)容器的日志
pause 暫停一個(gè)或多個(gè)容器中的所有進(jìn)程
port 查看端口映射或容器的特定映射列表
ps 查看容器列表
pull 從鏡像倉(cāng)庫(kù)拉取鏡像
push 將本地的鏡像上傳到鏡像倉(cāng)庫(kù),要先登陸到鏡像倉(cāng)庫(kù)
rename 重命名容器
restart 重啟容器
rm 刪除容器
rmi 刪除鏡像
run 創(chuàng)建一個(gè)新的容器并運(yùn)行一個(gè)命令
save 將指定鏡像保存成 tar 歸檔文件
search 從Docker Hub搜索鏡像
start 啟動(dòng)容器
stats 實(shí)時(shí)顯示容器資源使用情況的統(tǒng)計(jì)信息
stop 停止容器
tag 標(biāo)記本地鏡像,將其歸入某一倉(cāng)庫(kù)
top 展示一個(gè)容器中運(yùn)行的進(jìn)程
unpause 恢復(fù)容器中所有的進(jìn)程
update 更新容器配置
version 顯示Docker的版本信息
wait 阻塞直到容器停止,然后打印退出代碼
如:docker images 顯示所有鏡像
- 讓容器長(zhǎng)期運(yùn)行
docker run -d centos /bin/bash -c "while true; do sleep 1;done"
- 進(jìn)入容器查看容器運(yùn)行的情況
docker attach 容器ID
- 進(jìn)入容器內(nèi)部
docker exec -it 容器ID /bin/bash
attach 與 exec 主要區(qū)別如下
1.attach 直接進(jìn)入容器啟動(dòng)命令的終端,不會(huì)啟動(dòng)新的線程。
2.exec 則是在容器中打開(kāi)新的終端,并且可以啟動(dòng)新的線程。
3.如果想直接在終端中查看啟動(dòng)命令的輸出,用attach;其他情況使用exec。
- 容器運(yùn)行
docker客戶端使用docker命令來(lái)運(yùn)行的,run的參數(shù)表名客戶端要運(yùn)行一個(gè)新的客戶端
1.這個(gè)容器從哪個(gè)鏡像創(chuàng)建,這里是centos,基本的centos鏡像
2.在容器要運(yùn)行的命令,這里是/bin/bash,在容器中運(yùn)行Bash shell。
docker run -it centos /bin/bash
那么運(yùn)行上邊的命令之后在底層發(fā)生了什么呢?
按照順序,docker做了這些事情:
1.拉取centos鏡像:docker檢查centos鏡像是否存在,如果本地沒(méi)有鏡像,docker會(huì)在docker hub下載,如果鏡像已經(jīng)存在,docker會(huì)使用它來(lái)創(chuàng)建新的容器。
2.創(chuàng)建新的容器:當(dāng)docker有了這個(gè)鏡像之后,docker會(huì)用它來(lái)創(chuàng)建一個(gè)容器。
3.分配文件系統(tǒng)并且掛載一個(gè)可讀寫(xiě)的層:容器會(huì)在文件系統(tǒng)中創(chuàng)建,并且一個(gè)可讀寫(xiě)的層被添加到鏡像中。
4.分配網(wǎng)絡(luò)/橋接接口:創(chuàng)建一個(gè)允許容器與本地主機(jī)通信的網(wǎng)絡(luò)接口。
5.設(shè)置一個(gè)IP地址:從池中尋找一個(gè)可用的IP地址并且附加到容器上。
6.運(yùn)行你指定的程序:運(yùn)行指定的程序
7.捕獲并且提供應(yīng)用輸出:連接并且記錄標(biāo)準(zhǔn)輸出,輸入和錯(cuò)誤讓你可以看到你的程序是如何運(yùn)行的。
- 批量刪除結(jié)束的容器
#因?yàn)槟壳皼](méi)有退出的容器,所以報(bào)錯(cuò)。
docker rm -v $(docker ps -aq -f statue=exited)
- 啟動(dòng)、停止、重啟、刪除docker容器
#啟動(dòng)容器
docker start <ContainerId(或者name)>
#停止容器
docker stop <ContainerId(或者name)>
#重啟容器
docker restart <ContainerId(或者name)>
#刪除容器
docker rm <ContainerId(或者name)>
#刪除所有容器
docker rm $(docker ps -a -q)
- 更多實(shí)戰(zhàn)詳細(xì)的docker命令詳解
建議看我關(guān)于docker【初級(jí)篇】 和【中級(jí)篇】
PS:docker的基本命令很重要,但是如果會(huì)使用help這個(gè)功能官方介紹的更清楚,我這里也是把英文做了翻譯。主要還是理解原理。