容器(Container)


鏡像(Image)和容器(Container)的關系,就像是面向對象程序設計中的實例一樣,鏡像是靜態的定義,容器是鏡像運行時的實體。容器可以被創建、啟動、停止、刪除、暫停等。

 

 

 

 

容器的實質是進程,但與直接在宿主執行的進程不同,容器進程運行於屬於自己的獨立的命名空間。因此容器可以擁有自己的root文件系統、自己的網絡配置、自己的進程空間,甚至自己的用戶 ID 空間。容器內的進程是運行在一個隔離的環境里,使用起來,就好像是在一個獨立於宿主的系統下操作一樣。這種特性使得容器封裝的應用比直接在宿主運行更加安全。也因為這種隔離的特性,很多人初學 Docker 時常常會混淆容器和虛擬機。

每一個容器運行時,是以鏡像為基礎層,在其上創建一個當前容器的存儲層,我們可以稱這個為容器運行時讀寫而准備的存儲層為容器存儲層。

容器存儲層的生存周期和容器一樣,容器消亡時,容器存儲層也隨之消亡。因此,任何保存於容器存儲層的信息都會隨容器刪除而丟失。

按照 Docker 最佳實踐的要求,容器不應該向其存儲層內寫入任何數據,容器存儲層要保持無狀態化。所有的文件寫入操作,都應該使用數據卷(Volume)、或者綁定宿主目錄,在這些位置的讀寫會跳過容器存儲層,直接對宿主(或網絡存儲)發生讀寫,其性能和穩定性更高。

查看容器

docker ps

 

 注意:

管理docker容器可以通過名稱,也可以通過ID

ps是顯示正在運行的容器, -a是顯示所有運行過的容器,包括已經不運行的容器

啟動容器

守護進程方式啟動容器

docker run [參數] docker_image [執行的命令]

讓Docker容器在后台以守護形式運行。此時可以通過添加-d參數來實現

docker run -d nginx

 

 -t選項讓Docker分配一個偽終端並綁定到容器的標准輸入上,-i則讓容器的標准輸入保持打開

docker run -i -t nginx /bin/bash

 

 --name選項來給容器設置一個名字

docker run --name myubuntu -dit ubuntu

啟動已終止的容器

在生產過程中,常常會出現運行和不運行的容器,我們使用 start 命令開起一個已關閉的容器

docker start [container_id]

關閉容器

在生產中,我們會以為臨時情況,要關閉某些容器,我們使用 stop 命令來關閉某個容器

docker stop [container_id]

刪除容器

刪除容器有兩種方法:

正常刪除 -- 刪除已關閉的

強制刪除 -- 刪除正在運行的

正常刪除容器
   docker rm [container_id]
強制刪除運行容器
docker rm -f [container_id]
拓展批量關閉容器
docker rm -f $(docker ps -a -q)

進入正在運行的容器

docker exec [選項] 容器id/容器名 命令

只用-i參數時,由於沒有分配偽終端,界面沒有我們熟悉的 Linux 命令提示符,但命令執行結果仍然可以返回。

-i-t參數一起使用時,則可以看到我們熟悉的 Linux 命令提示符

docker exec -it myubuntu /bin/bash

exit退出容器,不會導致容器的停止

基於容器創建鏡像

docker commit -m '改動信息' -a "作者信息" container_id new_image:tag

命令演示:

進入一個容器,創建文件后並退出

docker exec -it myubuntu /bin/bash
root@ea100f3f0dd8:/# mkdir itcast
root@ea100f3f0dd8:/# touch itcast.txt
root@ea100f3f0dd8:/# ls
bin  boot  dev  etc  home  itcast  itcast.txt  lib  lib64  media  mnt  opt  tmp  usr  var
root@ea100f3f0dd8:/# exit

 

 創建一個鏡像

docker commit -m 'mkdir' -a 'qiruihua' myubuntu newubuntu:latest

查看鏡像

docker images

 

 啟動一個容器

docker run -it newubuntu

進入容器進行查看

ls

查看容器詳細信息

docker inspect [容器id]

查看容器全部信息

docker inspect 5f2bf39d64f1

查看容器運行日志

docker logs [容器id]

命令效果:

docker logs 5f2bf39d64f1

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM