docker create_Docker动手教程2.2:容器基本操作2
內(nèi)容摘要
- 暫停/取消暫停容器
- 刪除容器
- 進(jìn)入容器
- 創(chuàng)建容器
暫停/取消暫停容器
暫停容器命令:
docker pause 容器ID/容器名注意STATUS列,被暫停的容器的狀態(tài)依舊是“Up”,但是后面括號(hào)顯示為“Paused”。
取消暫停命令:
docker unpause 容器ID/容器名可以看到STATUS列,狀態(tài)變?yōu)椤癠p”,沒有“Paused”字樣了。
從上面可以看出,暫停操作表示容器沒有退出,仍然在工作。暫停會(huì)減少CPU的使用,主機(jī)可以利用更多的計(jì)算資源。
在暫停的過程中,我們可以做很多操作,比如給容器文件系統(tǒng)建立快照,測(cè)試時(shí)查看日志等。
刪除容器
使用命令:
docker rm 容器ID/容器名容器刪除報(bào)錯(cuò),從錯(cuò)誤信息可以看出,在刪除前,必須先停止容器,命令為:
docker stop 容器ID/容器名停止容器后,容器刪除成功。
進(jìn)入容器
容器可以看成是一臺(tái)微型電腦,有自己獨(dú)立的文件系統(tǒng),環(huán)境變量等。因此,在容器運(yùn)行起來后,可以進(jìn)入容器內(nèi)部觀察。
進(jìn)入容器方式有兩種:
docker attach
docker attach 容器ID容器ID可以是長ID或者短ID
運(yùn)行centos容器,進(jìn)入其中觀察:
進(jìn)入容器后發(fā)現(xiàn),每隔5秒輸出"hello docker"字符串,正好是運(yùn)行容器時(shí),使用while循環(huán)要求輸出的內(nèi)容。
可見,docker attach進(jìn)入容器后,正好是容器運(yùn)行時(shí)所用的同一終端,這點(diǎn)很重要。由于沒有啟動(dòng)新的終端,沒有啟動(dòng)新的進(jìn)程,這樣能節(jié)省資源。另外,如果我們想看容器啟動(dòng)時(shí)執(zhí)行命令的輸出信息,可以直接使用該命令。
docker exec
docker exec -it 容器ID bin/bash-it 表示以交互模式打開終端,執(zhí)行/bin/bash命令。
可以看出執(zhí)行docker exec后,進(jìn)入容器的主機(jī)名是容器的短ID。
進(jìn)入后,可以執(zhí)行在主機(jī)上執(zhí)行的命令,如下:
運(yùn)行ps -elf查看進(jìn)程,可以看到輸出結(jié)果最后一行顯示當(dāng)前的ps命令,倒數(shù)第二行顯示的是容器運(yùn)行執(zhí)行的 sleep 5 指令;
pwd指令查看當(dāng)前工作目錄;
ls 查看根目錄下文件信息;
hostname指令查看容器主機(jī)名為容器短ID。
在主機(jī)上能夠運(yùn)行的指令也能夠在容器中執(zhí)行,可見容器相當(dāng)于一臺(tái)微型電腦。
問題:容器中的文件系統(tǒng)和主機(jī)是一樣的嗎?
我們?cè)谌萜髦袆?chuàng)建一個(gè)文件,并寫入內(nèi)容:
在根目錄 / 下創(chuàng)建 hello_world.txt 文件,并寫入 hello docker! 字符串。
接著使用 exit 命令退出容器,查看主機(jī)根據(jù)目錄下是否有該文件:
退出容器后,可以看到主機(jī)名變?yōu)?DOCKER ,不再是容器的短ID了,可見已經(jīng)從容器中退出來了。使用 ls 命令查看根目錄下的文件,沒有看到在容器中創(chuàng)建的 hello_world.txt 文件。
和docker exec相比,我們進(jìn)入容器后新打開了一個(gè)終端,不是容器運(yùn)行時(shí)使用的終端,因此無法看到容器運(yùn)行指令的輸出日志。
創(chuàng)建容器
前面講到的docker run 命令可以直接運(yùn)行一個(gè)容器,實(shí)際上該命令包括兩個(gè)命令,即docker create 和 docker start(下一節(jié)會(huì)講解):
新建兩個(gè)容器,分別以docker run 和 docker create 執(zhí)行,名字分別叫centos_run和centos_create,命令如下:
docker create --name docker_create centos /bin/bash -c "while true; do sleep 5; echo hello docker create; done"docker run -d --name docker_run centos /bin/bash -c "while true; do sleep 5; echo hello docker run; done"從 docker ps -a 指令的輸出結(jié)果STATUS列可以看出:centos_run容器的狀態(tài)為Created,而centos_run容器的狀態(tài)為Up。
注意:兩個(gè)容器執(zhí)行指令輸出內(nèi)容不同,docker_run容器輸出 hello docker run,docker_create容器輸出 hello docker create。
問題:處于Created狀態(tài)的容器實(shí)際運(yùn)行起來了嗎?
可以通過 ps -elf 命令查看:
可以看到,只有centos_run容器的進(jìn)程存在,centos_create容器進(jìn)程不存在。
也就是說centos_create容器確實(shí)被創(chuàng)建了,但是沒有運(yùn)行。
對(duì)centos_create容器執(zhí)行docker start命令:
可以看出,執(zhí)行 docker start 命令后,centos_create 的狀態(tài)變?yōu)榱薝p。
總之,容器運(yùn)行被分解為了兩個(gè)動(dòng)作: create / start。
問題:處于Created狀態(tài)下的容器可以執(zhí)行 docker stop 操作嗎?
docker stop操作可以順利執(zhí)行,不過查看STATUS 列,狀態(tài)依然是Created,可見處于Created狀態(tài)下的容器做docker stop 操作沒有實(shí)際意義。
問題:處于Created狀態(tài)下的容器可以執(zhí)行 docker rm 操作嗎?
可見,是可以做這個(gè)操作的。
上面的內(nèi)容已經(jīng)涉及到容器的狀態(tài)和生命周期,下節(jié)會(huì)詳細(xì)講解容器的生命周期。
至此,容器的基本操作就講解完了,這些操作基本涵蓋了容器最常用的操作。
請(qǐng)大家按照本節(jié)的內(nèi)容,在阿里云ECS服務(wù)器上做實(shí)驗(yàn)。
實(shí)驗(yàn)
暫停容器
取消暫停容器
刪除容器
進(jìn)入容器
創(chuàng)建容器
總結(jié)
以上是生活随笔為你收集整理的docker create_Docker动手教程2.2:容器基本操作2的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一字的网名,一字的高冷网名515个
- 下一篇: git强制推送_Git 常用命令