Linux系統Docker的鏡像和容器的使用

在Docker中,容器(CONTAINER)和鏡像(IMAGE)的關係類似於對象和類的關係,鏡像是靜態的定義,容器是鏡像的一個動態實例

我們通過下列命令可以查看Docker已經安裝的鏡像:

docker images

可以看到一開始我們沒有安裝任何鏡像,只有Docker自帶的hello-world鏡像:
在這裏插入圖片描述
①REPOSITORY:表示鏡像的倉庫源;

②TAG:鏡像的標籤,代表這個倉庫源的不同版本,我們使用REPOSITORY:TAG來定義不同的鏡像,比如我們現在的hello-world鏡像就是latest最新版,也就是hello-world:latest;

③IMAGE ID:鏡像ID;

④CREATED:鏡像創建時間;

⑤SIZE:鏡像大小。

現在我們通過下列命令啓動hello-world鏡像的一個容器:

docker run hello-world

會有如下輸出:
在這裏插入圖片描述
我們通過下列命令查看啓動過的所有容器:

docker ps -a

有如下輸出:
在這裏插入圖片描述
可以看到上面有我們剛纔啓動的hello-world的容器,容器ID是e6e0adeed7f1,名字NAMES是系統隨機分配的,它現在處於退出狀態,我們可以通過下列命令將它重新啓動:

docker start e6e0adeed7f1

docker restart e6e0adeed7f1

但是很奇怪,我們並沒有看到和剛纔啓動時一樣的輸出,而是隻有一個e6e0adeed7f1,如下:
在這裏插入圖片描述
實際上,它確實輸出了,我們通過下列命令查看這個容器的標準輸出:

docker logs e6e0adeed7f1

我們可以看到因爲我們運行了兩次這個容器,所以會有兩個輸出,如下:
在這裏插入圖片描述
通過上面的例子,現在我們對Docker的鏡像和容器的使用有了一個大概的瞭解,接下來我們再通過另一個例子加深理解。

我們通過下列命令拉取ubuntu鏡像文件,在Docker上安裝Ubuntu系統:

docker pull ubuntu

然後我們來查看Docker已經安裝的鏡像:

docker images

如果輸出結果中出現ubuntu,如下圖,則表示Ubuntu系統安裝成功,如果沒有出現,也無需着急,可能是由於網絡的原因導致上一步沒有執行成功,可以在網絡順暢的地方多執行幾遍上一步直到結果中出現ubuntu:
在這裏插入圖片描述
在有了ubuntu這個鏡像之後,我們通過下列命令來啓動它的一個容器:

docker run -it --name myubuntu ubuntu

上面命令的意思是使用ubuntu鏡像啓動一個容器,參數爲以命令行模式進入該容器,容器的名字叫myubuntu,然後我們在本地Linux系統新建一個終端,執行如下命令:

docker ps

這個命令的意思是查看當前正在運行的容器,可以看到正在運行的容器就是我們剛纔啓動的ubuntu鏡像的一個容器,容器ID是69b7eee2c37f:
在這裏插入圖片描述
然後我們關掉這個終端回到剛纔的終端,發現命令行變成了如下的樣子:
在這裏插入圖片描述
這就是安裝在Docker上的Ubuntu系統的命令行,不過,需要注意的是,這裏啓動的Ubuntu系統是一個Docker容器,之前我們安裝的是一個ubuntu鏡像,我們可以在上面執行正常的命令,如下:
在這裏插入圖片描述
我們也可以通過如下命令或CTRL + D快捷鍵退出這個Ubuntu系統:

exit

執行完上面命令後,我們現在退出了剛纔的Ubuntu系統,那我們又怎麼進入剛纔的Ubuntu系統呢,彆着急,我們先通過下列命令查看正在運行的容器:

docker ps

我們會發現結果空空如也,沒有正在運行的容器,這是因爲剛纔我們退出了Ubuntu系統,對應的容器也不再運行了:
在這裏插入圖片描述
那我們如何知道剛纔我們運行的ubuntu鏡像的容器的信息呢,其實在前面我們也看到過,我們可以通過下列命令查看啓動過的所有容器:

docker ps -a

我們會發現輸出結果就有剛纔我們退出的ubuntu鏡像的容器的信息,我們可以看到它的容器ID是69b7eee2c37f,正處於退出狀態:
在這裏插入圖片描述
好了,現在我們可以根據這個信息再重新進入剛纔的Ubuntu系統了,我們執行下列命令:

docker restart myubuntu

docker restart 69b7eee2c37f

但是我們會發現我們的命令行並沒有變成在Docker上的Ubuntu系統的命令行,是沒有成功進入剛纔的Ubuntu系統嗎,並不是,實際上,上述命令啓動了剛纔那個ubuntu鏡像的容器,只是它現在被推到了後臺,我們通過docker ps命令可以看到剛纔那個ubuntu鏡像的容器正在運行:
在這裏插入圖片描述
我們也可以通過docker ps -a命令查看,如下:
在這裏插入圖片描述
剛纔那個ubuntu鏡像的容器正在後臺運行,我們可以通過下列命令進入:

docker attach 69b7eee2c37f

docker exec -it 69b7eee2c37f /bin/bash

不過,需要注意的是,使用docker attach的話,如果從這個容器退出,會導致容器的停止,但使用docker exec, 如果從這個容器退出,不會導致容器的停止,我們可以通過docker ps命令或docker ps -a命令查看上述兩個命令的區別。

在最後,我們來了解一下如何刪除容器和鏡像,我們可以通過下列命令刪除容器,-f是強制(force)刪除的意思:

docker rm 容器名或容器ID

docker rm -f 容器名或容器ID

我們可以通過下列命令刪除鏡像:

docker rmi 容器名或容器ID

不過,需要注意的是,刪除鏡像時必須保證它沒有如何鏡像存在,否則會報錯,我們可以在刪除一個鏡像時先將它的所有容器刪完再刪除它或者直接加上-f參數強制(force)刪除。

學習資源:Docker 教程 | 菜鳥教程:https://www.runoob.com/docker/docker-tutorial.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章