Docker筆記二之容器

Hunter發表於2023-04-28

本文首發於微信公眾號:Hunter後端

原文連結:Docker筆記二之容器

上一篇筆記介紹了 Docker 映象的概念,這一篇介紹容器的概念。

當我們從映象倉庫拉取了一個映象系統,我們稱之為映象,比如上一篇筆記中的 ubuntu,Python 映象。

當我們把映象執行起來,這個映象 image 就變成了一個容器 container。

我們所有的服務都是在映象執行起來後,在容器中實現的。

接下來介紹容器的一些基本命令

1、執行容器

我們以拉取的 ubuntu 映象為例,現在執行該映象,使其變成一個容器,命令如下:

docker run -it ubuntu:18.04 bash

docker run 為執行容器的命令

-it 容器執行的引數,-i 表示以互動模式執行容器,-t 為容器重新分配一個偽輸入終端,這兩者通常連用

ubuntu:18.04 透過這個引數來定位我們需要執行的容器,如果我們使用的 Python 映象,可以把這個變為 python:3.6

bash 表示我們進入容器的時候會執行 bash 命令,如果我們執行的是 Python 映象,這個命令改為 python,那麼一進入容器就會進入 python 的互動介面

當我們執行上面的語句後,就會進入到容器裡面,這個容器就是一個最簡潔的 Linux 系統

然後我們退出這個系統有兩種方式,一種是在容器內輸入 exit

另一種方式是 ctrl + p + q (按住ctrl,依次點選 p 和 q 按鈕,按完 p 放開,再按 q)

注意:如果我們第一次這樣進入容器,使用 exit 來退出的話,會導致容器也停止執行

後臺執行容器

如果僅僅是想執行一個容器,而不進入該容器,可以加上 -d 引數:

docker run -itd ubuntu:18.04 bash

2、檢視容器

檢視正在執行中的容器

docker container ls 

docker ps

以上兩條命令是等效的,都可以查出正在執行的容器,一般常用第二條 docker ps

檢視所有容器,包括停止執行的容器

如果是檢視包含停止執行的容器在內的所有容器,可以加上 -a 引數

docker container ls -a

docker ps -a

透過 ps 命令出來一個執行的容器列表,有如下幾種title:

CONTAINER ID:跟 IMAGE ID 一樣,也是每個容器的唯一 ID

IMAGE:表示這個容器是來自哪個映象,比如 ubuntu:18.04

COMMAND:容器啟動時執行的命令,比如我們前面執行的時候加的 bash,這個是可以自定義的

CREATED:什麼時候建立的

STATUS:容器執行狀態

PORTS:是容器執行的時候指定的埠對映,比如說,後面我們會介紹,在容器裡面執行 Django 系統,python3 manage.py runserver 0:9898,那麼容器內的埠就是 9898,如果想要在容器外訪問這個服務,則需要在容器執行的時候指定一個埠對映,將容器的 9898 埠對映到宿主機的某個埠

NAMES:我們執行容器的時候可以給容器指定一個 name,我們下面介紹這個操作

3、容器操作

進入容器

前面透過 docker ps 命令可以獲取所有正在執行的容器,如果想要進入某個容器內部,可以透過 container id 來操作

現在我們假設容器 id 為 4abb000c5ed5,命令為:

docker exec -it 4abb000c5ed5 bash

停止執行容器

如果想停止執行某個容器,使用 stop 命令:

docker stop 4abb000c5ed5

注意,停止執行的容器並沒有消失,我們可以透過 docker ps -a 檢視到

重啟執行容器

對於停止執行的容器,我們可以重新執行:

docker restart 4abb000c5ed5

restart 命令並不僅僅針對於已經停止執行的容器,有時候為了方便除錯,我們可以進入容器內部,修改某些程式碼,退出容器後執行 restart 命令,就可以使得修改的程式碼立即生效

刪除容器

如果想要刪除一個容器,注意,這裡的刪除操作一旦執行,容器就是真正的沒了,除非是掛載到宿主機的目錄檔案,容器內部的所有資料都會被刪除

docker rm 4abb000c5ed5

注意:rm 操作僅僅是針對於已經 stop 的容器,正在執行的容器是不能被刪除的

4、容器命名

給容器取名

在容器執行的時候,透過 --name 引數可以指定給容器命名

docker run -itd --name hunter ubuntu:18.04 bash

在之後的操作裡,比如,進入容器,停止執行容器,刪除容器 都可以用 name 來替代 container id

比如:

docker exec -it hunter bash

docker stop hunter

docker restart hunter

注意: 容器的命名必須是唯一的,當我們給另一個容器命名已經存在的名稱的時候,會報錯

5、檢視容器詳細資訊

docker inspect 4abb000c5ed5

docker inspect hunter

透過 container id 或者 name 來檢視都是可以的

如果想獲取更多後端相關文章,可掃碼關注閱讀:
image.png

相關文章