A. 有沒有覺得docker原生命令不是很方便
① run (自動擴展docker run命令前綴,定義時區、映射local的hosts等)
~$ dkutil run --name test-redis1 -d redis
docker run -ti -e TZ=Asia/Shanghai -v /etc/hosts:/etc/hosts --name test-redis1 -d redis
② clean (清除臨時、測試產生的多餘容器,支持模糊刪除)
#啟動兩個未命名容器和一個命名為"test"前綴的容器 ~$ dkutil run -d redis ~$ dkutil run -d redis ~$ dkutil run --name test-redis1 -d redis #執行clean(自動識別包含_的自動命名容器,執行刪除,等同於 clean *) ~$ dkutil clean
docker rm -f tender_austin distracted_euclid
test-redis1
tender_austin #根據容器名模糊刪除容器 ~$ dkutil clean test* docker rm -f test-redis1
test-redis1
③ ps (簡潔顯示 docker ps -a 的結果,支持模糊過濾結果)
#查看所有容器(等同於 ps *) ~$ dkutil ps
test1 web tender_mclean t2 trusting_sinoussi nostalgic_snyder #查看包含'_'的所有容器(模糊查找容器) ~$ dkutil ps *_* tender_mclean trusting_sinoussi nostalgic_snyder
④ ol (區別於ps的地方在於,只會顯示正在運行的容器,即 docker ps)
#啟動所有容器 ~$ dkutil start * docker start test1 web tender_mclean t2 trusting_sinoussi nostalgic_snyder
test1
web
tender_mclean
t2
trusting_sinoussi
nostalgic_snyder #停止包含test前綴和包含'_'的容器 ~$ dkutil stop test* *_* docker stop test1 tender_mclean trusting_sinoussi nostalgic_snyder tender_mclean trusting_sinoussi nostalgic_snyder
test1
tender_mclean
trusting_sinoussi
nostalgic_snyder
tender_mclean
trusting_sinoussi
nostalgic_snyder #ol (只剩下兩個結果) ~$ dkutil ol
web t2
⑤ rs (即restart命令,用法和 start、stop完全相同)
#重啟所有容器 ~$ dkutil rs * docker restart test1 test3 test2
test1
test3
test2
⑥ rsol (也是restart,和rs區別在於只會重啟運行中容器)
#停止test1容器 ~$ dkutil stop test1 #重啟所有運行中容器 ~$ dkutil rsol * docker restart test3 test2
test3
test2
B. docker 怎麼刪除某個容器
docker rm 容器id
C. 容器狀態是Removal+in+progress+怎樣刪除
1,首先記下出問題的docker,開頭的hash值
docker ps -a
2,進入docker容器目錄
cd /var/lib/docker/containers# 找到上一步找到的hash值開頭的文件夾名,刪掉它rm -rf xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
3,重啟docker服務
systemctl restart docker# service docker restart
4,測試
docker ps -a
D. 如何導出容器,導入容器和刪除容器
導出容器
如果要導出本地某個容器,可以使用 docker export 命令。
$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7691a814370e ubuntu:14.04 "/bin/bash" 36 hours ago Exited (0) 21 hours ago test
$ sudo docker export 7691a814370e > ubuntu.tar
這樣將導出容器快照到本地文件。
導入容器快照
可以使用 docker import 從容器快照文件中再導入為鏡像,例如
$ cat ubuntu.tar | sudo docker import - test/ubuntu:v1.0
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
test/ubuntu v1.0 9d37a6082e97 About a minute ago 171.3 MB
此外,也可以通過指定 URL 或者某個目錄來導入,例如
$sudo docker import
*註:用戶既可以使用 docker load 來導入鏡像存儲文件到本地鏡像庫,也可以使用 docker import 來導入一個容器快照到本地鏡像庫。這兩者的區別在於容器快照文件將丟棄所有的歷史記錄和元數據信息(即僅保存容器當時的快照狀態),而鏡像存儲文件將保存完整記錄,體積也要大。此外,從容器快照文件導入時可以重新指定標簽等元數據信息。
刪除
可以使用 docker rm 來刪除一個處於終止狀態的容器。
例如
$sudo docker rm trusting_newton
trusting_newton
如果要刪除一個運行中的容器,可以添加 -f 參數。Docker 會發送 SIGKILL 信號給容器。
E. Docker鏡像操作常用指令有哪些
docker version:查看docker版本;
docker info:查看docker詳細信息;
docker --help:查看docker命令;
鏡像命令
docker images:列出本地主機上的鏡像,REPOSITORY:表示鏡像的倉庫源;TAG:鏡像的標簽;IMAGE
ID:鏡像ID;CREATED:鏡像創建時間;SIZE :鏡像大小,同一個倉庫源可以有多個TAG,可以表示倉庫源的不同版本,使用REPOSITORY:TAG來定義不同的鏡像;
docker images -a:列出本地所有的鏡像;
docker images -p:只顯示鏡像ID;
docker images --digests:顯示鏡像的摘要信息;
docker images --no-trunc:顯示完整的鏡像信息;
docker search tomcat:從Docker Hub上查找tomcat鏡像;
容器命令
docker run [OPTIONS] IMAGE:根據鏡像新建並啟動容器,IMAGE是鏡像ID或鏡像名稱;
docker ps:列出當前所有正在運行的容器;
exit:退出並停止容器;
docker start 容器ID或容器名稱:啟動容器;
docker restart 容器ID或容器名稱:重新啟動容器;
docker stop 容器ID或容器名稱:停止容器;
docker kill 容器ID或容器名稱:強制停止容器;
docker rm 容器ID或容器名稱:刪除容器;
docker rm -f $(docker ps -a -q):刪除多個容器。
F. docker怎麼清理容器的文件
# 殺死所有正在運行的容器.
alias dockerkill='docker kill $(docker ps -a -q)'
# 刪除所有已經停止的容器.
alias dockercleanc='docker rm $(docker ps -a -q)'
# 刪除所有未打標簽的鏡像.
alias dockercleani='docker rmi $(docker images -q -f dangling=true)'
# 刪除所有已經停止的容器和未打標簽的鏡像.
alias dockerclean='dockercleanc || true && dockercleani'
另附上docker常用命令
docker version #查看版本
docker search tutorial#搜索可用docker鏡像
docker pull learn/tutorial #下載鏡像
docker run learn/tutorial echo "hello word"#在docker容器中運行hello world!
docker run learn/tutorial apt-get install -y ping#在容器中安裝新的程序
保存鏡像
首先使用docker ps -l命令獲得安裝完ping命令之後容器的id。然後把這個鏡像保存為learn/ping。
提示:
1.運行docker commit,可以查看該命令的參數列表。
2.你需要指定要提交保存容器的ID。(譯者按:通過docker ps -l 命令獲得)
3.無需拷貝完整的id,通常來講最開始的三至四個字母即可區分。(譯者按:非常類似git裡面的版本號)
正確的命令:
docker commit 698 learn/ping
G. 怎麼把docker裡面已經創建的容器刪除
Docker是一個為開發人員和系統管理員開發、遷移和運行應用程序的平台。應用程序通過Docker打包成Docker Image後,可以實現統一的方式來下載、啟動、擴展、刪除和遷移,這樣方便了應用程序的部署和運維。https://community/docs/DOC-42054 Docker採用伺服器/客戶端模式。Docker客戶端通過和Docker Daemon進行交互來新建、運行或者部署Docker容器。用戶可以將Docker客戶端和Docker Daemon安裝在同一個系統上,也可以安裝在不同的系統上。Docker客戶端通過埠或者RESTful API和Docker Daemon進行通信。 Docker內部由三部分組成: Docker images:Docker image是一個只讀模板,用於創建Docker容器。Image中可以包含Linux操作系統、Apache或者Web應用程序等等,用戶可以下載已經創建好的Docker image,也可以創建Docker image給其他用戶使用。 每個image是由很多層組成,Docker通過Union File Systems將這些層綁定在一個image中。每個image都以一個初級image做為基礎,然後通過操作指令在這些初級image上添加新層,操作指令可以是運行的命令、添加文件或目錄或者創建可用操作環境等。這些操作指令都被保存在「Dockerfile」文件中。 Docker registries: Docker registries用於保存Docker image,也分公用和私用二種。公用的Docker registry就是Docker Hub,用戶也可以創建私有的Docker registry,為其他用戶提供Docker images下載。 Docker containers:類似於保存VMware虛擬機配置文件的目錄,它可以為應用程序運行提供一切要素。Docker Containers可以運行、啟動、停止或者被刪除,每個container都是隔離的安全應用平台。
H. Docker的save和export命令的區別
Docker是如何工作的(簡單說明)
Docker是基於鏡像的。鏡像類似於已經包含了文件、配置和安裝好的程序的虛擬機鏡像。同樣的,你可以像啟動虛擬機一樣啟動多個鏡像實例。運行中的鏡像稱為容器。你可以修改容器(比如刪除一個文件),但這些修改不會影響到鏡像。不過,你使用docker commit <container-id> <image-name>命令可以把一個正在運行的容器變成一個新的鏡像。
舉個例子:
# 像Docker官方的hello world例子一樣,拉取一個叫busybox的鏡像
sudo docker pull busybox
# 查看本地已經有哪些鏡像
# 我們可以看到busybox
sudo docker images
# 現在讓我們來修改下busybox鏡像的容器
# 這次,我們創建一個文件夾
sudo docker run busybox mkdir /home/test
# 讓我們再看看我們有哪些鏡像了。
# 注意每條命令執行後容器都會停止
# 可以看到有一個busybox容器
sudo docker ps -a
# 現在,可以提交修改了。
# 提交後會看到一個新的鏡像busybox-1
# <CONTAINER ID> 是剛剛修改容器後得到的ID
sudo docker commit <CONTAINER ID> busybox-1
# 再看看我們有哪些鏡像。
# 我們現在同時有busybox和busybox-1鏡像了。
sudo docker images
# 我們執行以下命令,看看這兩個鏡像有什麼不同
sudo docker run busybox [ -d /home/test ] && echo 'Directory found' || echo 'Directory not found'
sudo docker run busybox-1 [ -d /home/test ] && echo 'Directory found' || echo 'Directory not found'
現在,我們有兩個不同的鏡像了(busybox和busybox-1),還有一個通過修改busybox容器得來的容器(多了一個/home/test文件夾)。下面來看看,是如何持久化這些修改的。
導出(Export)
Export命令用於持久化容器(不是鏡像)。所以,我們就需要通過以下方法得到容器ID:
sudo docker ps -a
接著執行導出:
sudo docker export <CONTAINER ID> > /home/export.tar
最後的結果是一個2.7MB大小的Tar文件(比使用save命令稍微小些)。
保存(Save)
Save命令用於持久化鏡像(不是容器)。所以,我們就需要通過以下方法得到鏡像名稱:
sudo docker images
接著執行保存:
sudo docker save busybox-1 > /home/save.tar
最後的結果是一個2.8MB大小的Tar文件(比使用export命令稍微大些)。
它們之間的不同
現在我們創建了兩個Tar文件,讓我們來看看它們是什麼。首先做一下小清理——把所有的容器和鏡像都刪除:
# 查看所有的容器
sudo docker ps -a
# 刪除它們
sudo docker rm <CONTAINER ID>
# 查看所有的鏡像
sudo docker images
# 刪除它們
sudo docker rmi busybox-1
sudo docker rmi busybox譯註:可以使用 docker rm $(docker ps -q -a) 一次性刪除所有的容器,docker rmi $(docker images -q) 一次性刪除所有的鏡像。
現在開始導入剛剛導出的容器:
# 導入export.tar文件
cat /home/export.tar | sudo docker import - busybox-1-export:latest
# 查看鏡像
sudo docker images
# 檢查是否導入成功,就是啟動一個新容器,檢查裡面是否存在/home/test目錄(是存在的)
sudo docker run busybox-1-export [ -d /home/test ] && echo 'Directory found' || echo 'Directory not found'
使用類似的步驟導入鏡像:
# 導入save.tar文件
docker load < /home/save.tar
# 查看鏡像
sudo docker images
# 檢查是否導入成功,就是啟動一個新容器,檢查裡面是否存在/home/test目錄(是存在的)
sudo docker run busybox-1 [ -d /home/test ] && echo 'Directory found' || echo 'Directory not found'
那,它們之間到底存在什麼不同呢?我們發現導出後的版本會比原來的版本稍微小一些。那是因為導出後,會丟失歷史和元數據。執行下面的命令就知道了:
# 顯示鏡像的所有層(layer)
sudo docker images --tree
執行命令,顯示下面的內容。正你看到的,導出後再導入(exported-imported)的鏡像會丟失所有的歷史,而保存後再載入(saveed-loaded)的鏡像沒有丟失歷史和層(layer)。這意味著使用導出後再導入的方式,你將無法回滾到之前的層(layer),同時,使用保存後再載入的方式持久化整個鏡像,就可以做到層回滾(可以執行docker tag <LAYER ID> <IMAGE NAME>來回滾之前的層)。
vagrant@Ubuntu-13:~$ sudo docker images --tree
├─f502877df6a1 Virtual Size: 2.489 MB Tags: busybox-1-export:latest
└─511136ea3c5a Virtual Size: 0 B
└─bf747efa0e2f Virtual Size: 0 B
└─48e5f45168b9 Virtual Size: 2.489 MB
└─769b9341d937 Virtual Size: 2.489 MB
└─227516d93162 Virtual Size: 2.489 MB Tags: busybox-1:latest
I. docker菜鳥教程是什麼
Docker視頻免費下載
鏈接:https://pan..com/s/1WmpJyKAXcbPDgn29SS-c5g
Docker視頻|走進Docker|從Docker到CaaS(一)Docker集群管理介紹|從Docker到CaaS(三)Kubernetes|從Docker到CaaS(六)微服務與CaaS|從Docker到CaaS(二)Docker 容器管理工具|從 Docker 到 CaaS(五)靈雀雲部署 Docker 容器|