本文首發於微信公眾號: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 來檢視都是可以的
如果想獲取更多後端相關文章,可掃碼關注閱讀: