柚子快報激活碼778899分享:運維 Docker容器基本操作
docker中的容器就是一個輕量級的虛擬機,是鏡像運行起來的一個狀態(tài),本文就先來看看容器的基本操作。
查看容器
查看容器
啟動docker后,使用docker ps命令可以查看當前正在運行的容器:
?
查看所有容器
上面這條命令是查看當前正在運行的容器,如果需要查看所有容器,則可以通過docker ps -a命令查看:
?
在查看容器時,涉及到幾個查看參數(shù),含義分別如下:
CONTAINER ID CONTAINER ID是指容器的id,是一個唯一標識符,這是一個64位的十六進制整數(shù),在不會混淆的情況下可以只采用id的前幾位進行標識一個容器。 IMAGE IMAGE表示創(chuàng)建容器時使用的鏡像。 COMMAND COMMAND表示容器最后運行的命令。 CREATED 創(chuàng)建容器的時間。 STATUS 容器的狀態(tài),這里可能顯示一個容器啟動時間,也能顯示容器關(guān)閉時間。具體顯示那個要看容器當前的狀態(tài)。 PORTS 容器對外開放的端口。 NAMES 容器的名字,如果不設(shè)置,會有一個默認的名字。
查看最新創(chuàng)建的容器
使用docker ps -l可以查看最近創(chuàng)建的容器,如下:
?
查看最新創(chuàng)建的n個容器
可以使用docker ps -n=XXX來查看最新創(chuàng)建的n個容器,如下:
?
創(chuàng)建容器
創(chuàng)建容器整體上來說有兩種不同的方式,可以先創(chuàng)建,再啟動,也可以連創(chuàng)建帶啟動一步到位,無論是那種方式,流程都是相似的,當執(zhí)行一個創(chuàng)建命令之后,docker首先會去本地路徑下查找是否有相應(yīng)的鏡像,如果沒有,就去docker hub上搜索,如果搜索到了,則下載下來,然后利用該鏡像創(chuàng)建一個容器并啟動。容器的文件系統(tǒng)是在只讀的鏡像文件上添加一層可讀寫的文件層,這樣可以使在不改變鏡像的情況下,只記錄改變的數(shù)據(jù)。下面對這兩種方式分別予以介紹。
容器創(chuàng)建
開發(fā)者可以首先使用docker create命令創(chuàng)建一個容器,這個時候創(chuàng)建出來的容器是處于停止狀態(tài),沒有運行,例如要創(chuàng)建一個nginx容器,創(chuàng)建命令如下:
docker create nginx
創(chuàng)建成功后,可以查看容器是否創(chuàng)建成功:
此時創(chuàng)建的容器并未運行,處于停止狀態(tài),容器的name是隨機生成的,開發(fā)者也可以在創(chuàng)建容器時指定name,如下:
docker create --name=nginx nginx
運行結(jié)果如下:
?
此時的name屬性就不是隨機生成的,而是用戶指定的name。
這種方式只是單純的創(chuàng)建了一個用戶,并未啟動。
容器創(chuàng)建+啟動
如果開發(fā)者需要既創(chuàng)建又啟動容器,則可以使用docker run命令。docker run命令又可以啟動兩種不同模式的容器:后臺型容器和交互型容器,顧名思義,后臺型容器就是一個在后臺運行的容器,默默的在后臺執(zhí)行計算就行了,不需要和開發(fā)者進行交互,而交互型容器則需要接收開發(fā)者的輸入進行處理給出反饋。對于開發(fā)者而言,大部分情況下創(chuàng)建的都是后臺型容器,不過在很多時候,即使是后臺型容器也不可避免的需要進行交互,下面分別來看。
后臺型容器
后臺型容器以nginx為例,一般nginx在后臺運行即可:
docker run --name nginx1 -d -p 8080:80 nginx
--name含義和上文一樣,表示創(chuàng)建的容器的名字,-d表示容器在后臺運行,-p表示將容器的80端口映射到宿主機的8080端口,創(chuàng)建過程如下圖:
首先依然會去本地檢查,本地沒有相應(yīng)的容器,則會去Docker Hub上查找,查找到了下載并運行,并且生成了一個容器id。運行成功后,在瀏覽器中輸入http://localhost:8080就能看到Nginx的默認頁面了,如下:
這是一個后臺型容器的基本創(chuàng)建方式。
交互型容器
也可以創(chuàng)建交互型容器,例如創(chuàng)建一個ubuntu容器,開發(fā)者可能需要在ubuntu上面輸入命令執(zhí)行相關(guān)操作,交互型容器創(chuàng)建方式如下:
docker run --name ubuntu -it ubuntu /bin/bash
參數(shù)含義都和上文一致,除了-it,-it參數(shù),i表示開發(fā)容器的標準輸入(STDIN),t則表示告訴docker,為容器創(chuàng)建一個命令行終端。執(zhí)行結(jié)果如下:
該命令執(zhí)行完后,會打開一個輸入終端,讀者就可以在這個終端里愉快的操作ubuntu了。 想要退出該終端,只需要輸入exit命令即可。
容器啟動
啟動
如果開發(fā)者使用了docker run命令創(chuàng)建了容器,則創(chuàng)建完成后容器就已經(jīng)啟動了,如果使用了docker create命令創(chuàng)建了容器,則需要再執(zhí)行docker start命令來啟動容器,使用docker start命令結(jié)合容器id或者容器name可以啟動一個容器,如下:
docker start啟動的是一個已經(jīng)存在的容器,要使用該命令啟動一個容器,必須要先知道容器的id或者name,開發(fā)者可以通過這兩個屬性啟動一個容器(案例中,nginx是通過name啟動,而ubuntu則是通過id啟動)。一般來說,第一次可以使用docker run啟動一個容器,以后直接使用docker start即可。
重啟
容器在運行過程中,會不可避免的出問題,出了問題時,需要能夠自動重啟,在容器啟動時使用--restart參數(shù)可以實現(xiàn)這一需求。根據(jù)docker官網(wǎng)的解釋,docker的重啟策略可以分為4種,如下:
四種的含義分別如下:
no表示不自動重啟容器,默認即此。 on:failure:[max-retries]表示在退出狀態(tài)為非0時才會重啟(非正常退出),有一個可選擇參數(shù):最大重啟次數(shù),可以設(shè)置最大重啟次數(shù),重啟次數(shù)達到上限后就會放棄重啟。 always表示始終重啟容器,當docker守護進程啟動時,也會無論容器當時的狀態(tài)為何,都會嘗試重啟容器。 ubless-stopped表示始終重啟容器,但是當docker守護進程啟動時,如果容器已經(jīng)停止運行,則不會去重啟它。
容器停止
通過docker stop命令可以終止一個容器,如下:
可以通過name或者id終止一個容器。
容器刪除
單個刪除
容器停止后還依然存在,如果需要,還可以通過docker start命令再次重啟一個容器,如果不需要一個容器,則可以通過docker rm命令刪除一個容器。刪除容器時,只能刪除已經(jīng)停止運行的容器,不能刪除正在運行的容器。如下:
可以通過name或者id刪除一個容器。如果非要刪除一個正在運行的容器,可以通過-f參數(shù)實現(xiàn),如下:
批量刪除
容器也可以批量刪除,命令如下:
docker rm $(docker ps -a -q)
docker ps -a -q會列出所有容器的id,供rm命令刪除。
如下命令也支持刪除已退出的孤立的容器:
docker container prune
柚子快報激活碼778899分享:運維 Docker容器基本操作
參考文章
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。