今天繼續上次的內容,補充容器的其他相對高大上一些的操作,其實也不難,關鍵要靜下心來看。這次有的命令會進入容器內部。
tip:很多時候容器或鏡像的名字或ID都起相同作用。
概念
- 提交容器:把原始鏡像和對原始鏡像的操作固化,形成一個新的鏡像。
- 進入容器:比如說我用Docker運行了一個Ubuntu系統,那要看容器裏面的Ubuntu系統就要進入容器
- 終端:一般就是指屏幕。輸出到終端就是在屏幕上顯示。
基本命令
sudo docker top $container #查看容器$container內部的進程,注意是容器內,我也感覺這個有點奇怪
sudo docker inspect $container #查看$container的信息,可加入 -f 過濾,具體見下面例子
sudo docker logs $log #以後臺守護形式啓動的容器,程序輸出結果不在終端直接顯示,這時可通過日誌查看
sudo docker exec $container $cmd #讓容器$container內部執行$cmd命令
sudo docker commit $container #把當前容器提交成鏡像,會生成一個新的鏡像
sudo docker export -o $des $container #把container導出成$des
sudo docker export $container > $des #同上
sudo docker import -i $source #導入$source
sudo docker import < $source #同上
實踐
查看容器進程和狀態
sudo docker run --name web nginx
sudo docker top web #打開一個新的終端輸入,因爲運行的web會佔用原來的終端
sudo docker inspect -f "{{ .State }}" web
sudo docker inspect web
查看容器日誌
sudo docker run -d --name log_demo ubuntu /bin/bash -c 'for((i=0;i<5;i++));do echo "time $i";sleep 1; done;' #本地沒有ubuntu鏡像會先下載
sudo docker logs log_demo
在容器中執行命令
sudo docker start web #開始之前停止的容器
sudo docker exec web ls /var/log/nginx #查看容器中 /var/log/nginx 下的文件
sudo docker exec web tail /var/log/nginx/access.log #查看容器中/var/log/nginx/access.log的內容
第3條命令沒有在終端輸出信息,以後學多了再回頭看怎麼回事吧。書上寫的是能輸出
提交容器更改與導入導出容器
sudo docker run -it centos:7 /bin/bash #安裝個centos操作系統,並進入內部
yum install -y crontabs
exit
sudo docker ps -l -a #-l 選項列出最近(latest)的容器
sudo docker images
sudo docker commit gl/crontab:latest
sudo docker images
至此,Docker的容器知識瞭解差不多了,下面會寫一下更有用更有趣的數據卷和網絡。