docker容器狀態(tài)轉(zhuǎn)換管理命令實(shí)例詳解
前言
docker容器有三種狀態(tài)運(yùn)行、停止、暫停,鏡像可以創(chuàng)建、運(yùn)行容器,鏡像和容器也可以轉(zhuǎn)換成tar壓縮包進(jìn)行存儲(chǔ)。本文為大家介紹容器的狀態(tài)轉(zhuǎn)換命令及鏡像創(chuàng)建運(yùn)行容器、tar包導(dǎo)入導(dǎo)出相關(guān)的命令及使用場(chǎng)景。
結(jié)合下文中的命令介紹來(lái)理解上面的這張圖。
一、從鏡像啟動(dòng)容器
從docker鏡像啟動(dòng)一個(gè)容器的語(yǔ)法如下,使用docker run
命令。
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
常用options說(shuō)明,docker create
與docker run
命令參數(shù)幾乎一致,只是docker run
創(chuàng)建并運(yùn)行容器,docker create
只創(chuàng)建(可以docker ps -a
查看到)不運(yùn)行容器。
option | 作用 |
---|---|
-d | 守護(hù)進(jìn)程,后臺(tái)運(yùn)行該容器 |
-v | 目錄映射,容器目錄掛載到宿主機(jī)目錄,格式:宿主機(jī)目錄:容器目錄 |
-p | 指定端口映射,格式:主機(jī)(宿主)端口:容器端口 |
-P | 隨機(jī)端口映射,容器內(nèi)部端口隨機(jī)映射到主機(jī)的端口 |
–name nginx-zimug | 容器名字nginx-zimug |
-m, --memory bytes | 設(shè)置容器使用內(nèi)存最大值 |
-h, --hostname string | 指定容器的 hostname |
–dns 8.8.8.8 | 指定容器 dns 服務(wù)器8.8.8.8 |
-e JAVA_HOME=“路徑” | 設(shè)置環(huán)境變量,如JAVA_HOME |
–rm | 容器退出時(shí),刪除容器及容器目錄 |
示例一:在后臺(tái)(-d)運(yùn)行一個(gè)名稱(–name)為nginx-zimug的容器,將容器的80端口映射到宿主機(jī)80端口
docker run -d --name nginx-zimug -p 80:80 nginx
示例二:如果不加-d會(huì)在Linux終端下輸出容器的標(biāo)準(zhǔn)輸入輸出日志,當(dāng)退出終端時(shí),容器停止運(yùn)行。這種模式通常不用于生產(chǎn),常用于調(diào)試容器。
docker run --rm --name nginx-zimug -p 80:80 nginx
--rm
參數(shù)用于容器運(yùn)行時(shí)停止之后,直接刪除容器,而不是讓容器進(jìn)入stoped狀態(tài)。
示例三:-v
表示宿主機(jī)目錄與容器目錄的映射關(guān)系
docker run -d -p 80:80 \ --name nginx-prod \ -v /root/nginx/html:/usr/share/nginx/html \ -v /root/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \ -v /root/nginx/logs:/var/log/nginx nginx
二、查看容器與日志
docker ps //查看運(yùn)行中running狀態(tài)的容器 docker ps –a //查看所有狀態(tài)的容器(包含running、paused、stopped) docker container ls //等同于docker ps docker container ls –a //等同于docker ps –a
查看的結(jié)果如下:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1061ed186789 nginx "/docker-entrypoint.…" 5 minutes ago Up 5 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp nginx-zimug
- CONTAINER ID :容器ID
- IMAGE:鏡像名稱
- COMMAND:容器內(nèi)部軟件腳本啟動(dòng)命令
- CREATED: 容器創(chuàng)建的時(shí)間
- STATUS:容器的運(yùn)行狀態(tài)
- PORTS: 容器與宿主機(jī)的端口映射關(guān)系
- NAMES: 容器的名稱
docker logs 容器ID; //查看容器日志標(biāo)準(zhǔn)輸出
比如nginx服務(wù)的日志如下所示:
三、進(jìn)入容器內(nèi)部操作系統(tǒng)
有的時(shí)候我們通過(guò)docker ps
和docker logs
的信息很難判斷容器內(nèi)部服務(wù)的運(yùn)行情況。這個(gè)時(shí)候我們就需要進(jìn)入到容器內(nèi)部操作系統(tǒng),使用下面的命令。
docker exec -it 容器ID /bin/bash
進(jìn)入到容器內(nèi)部操作系統(tǒng)之后,想查看什么信息,就和常規(guī)使用linux命令是一樣的。退出容器使用exit命令。
四、停止容器暫停容器
通過(guò)docker ps
找到處于運(yùn)行狀態(tài)的容器id或容器名稱
docker stop 9be696a0c283 //停止正在運(yùn)行容器 docker container stop nginx-zimug //停止正運(yùn)行容器(ID或Names)
執(zhí)行該命令后容器進(jìn)入stoped狀態(tài),不再提供服務(wù),不占用宿主機(jī)資源。stopped狀態(tài)的容器可以再次被啟動(dòng)。
docker pause 容器名/容器ID; //暫停容器服務(wù) docker unpause 容器名/容器ID; //恢復(fù)容器服務(wù)
除了stop停止容器,還有一種方法是暫停容器服務(wù),如上命令所示。被暫停的容器不再對(duì)外服務(wù),但是仍然占用宿主機(jī)資源。這種方式并不常用!
五、啟動(dòng)stopped狀態(tài)的容器
通過(guò)docker ps -a
可以找到處于stopped狀態(tài)的容器信息。使用下面命令可以讓stopped狀態(tài)的容器再次進(jìn)入運(yùn)行狀態(tài)。
docker start 容器名/容器ID
不論容器處于什么狀態(tài),如果想重啟容器,可以使用下面的命令。
docker restart 容器名/容器ID //重啟容器(根據(jù)ID或NAMES)
六、刪除容器
如果想要?jiǎng)h除容器,一定要讓容器處于stopped狀態(tài)才可以。
docker rm 容器ID
七、export與import
將容器導(dǎo)出為tar包,生成的是該容器的快照,復(fù)刻的是容器當(dāng)前的linux系統(tǒng)環(huán)境
docker export nginx-zimug > nginx-zimug.tar
如下所示的命令,將tar包導(dǎo)入生成一個(gè)鏡像,該鏡像的命名名稱是new-nginx-zimug
docker import - new-nginx-zimug < nginx-zimug.tar
八、commit
假設(shè)我們有這樣一種場(chǎng)景,容器啟動(dòng)之后發(fā)現(xiàn)一個(gè)配置文件參數(shù)寫錯(cuò)了,然后通過(guò)docker exec -it
進(jìn)入容器內(nèi)部對(duì)配置文件進(jìn)行了修改。
我們已經(jīng)介紹過(guò),一旦容器發(fā)生重啟,針對(duì)容器所做的任何寫操作全部丟失。那么我們?yōu)榱藢⑷萜餍薷闹蟮臓顟B(tài)保存下來(lái),可以使用commit將容器運(yùn)行時(shí)快照,保存為本機(jī)的一個(gè)鏡像。
docker commit -a "zimug" -m "comment" nginx-zimug nginx:zimug
比如使用下面的命令將容器nginx-zimug保存為鏡像nginx:zimug
docker commit -a "zimug" -m "comment" nginx-zimug nginx:zimug
通過(guò)docker images
查看commit產(chǎn)生的鏡像
# docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx zimug 7e4e3219870e 8 seconds ago 142MB
九、查看容器配置及資源使用情況
查看容器配置信息,該命令會(huì)返回一個(gè)json格式信息,如網(wǎng)絡(luò)配置、環(huán)境變量配置、端口配置、數(shù)據(jù)卷配置等信息。
docker inspect <容器ID或容器名稱>
查看容器資源使用情況,使用docker stats
命令,可以查看CPU使用率,內(nèi)存使用率 、網(wǎng)絡(luò)IO、磁盤IO、進(jìn)程號(hào)等信息。
# docker stats nginx-zimug CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS ec6953bce17b nginx-zimug 0.00% 1.41MiB / 990.9MiB 0.14% 656B / 0B 0B / 7.68kB 2
使用docker top
命令可以查看容器內(nèi)進(jìn)程信息。如下問(wèn)所示,一個(gè)master進(jìn)程,一個(gè)worker進(jìn)程。
# docker top nginx-zimug UID PID PPID C STIME TTY TIME CMD root 6169 6150 0 10:27 ? 00:00:00 nginx: master process nginx -g daemon off; 101 6217 6169 0 10:27 ? 00:00:00 nginx: worker process
總結(jié)
到此這篇關(guān)于docker容器狀態(tài)轉(zhuǎn)換管理命令的文章就介紹到這了,更多相關(guān)docker容器狀態(tài)轉(zhuǎn)換命令內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決docker訪問(wèn)外部https數(shù)字證書問(wèn)題
這篇文章主要介紹了docker訪問(wèn)外部https數(shù)字證書問(wèn)題,為了解決證書驗(yàn)證的問(wèn)題,我們需要在構(gòu)建 docker 鏡像的時(shí)候?qū)?nbsp;ca-certificates 根證書裝上,需要的朋友可以參考下2022-09-09Docker服務(wù)器存儲(chǔ)資源池不足的問(wèn)題解決
這篇文章主要給大家介紹了關(guān)于Docker服務(wù)器存儲(chǔ)資源池不足的問(wèn)題解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11詳解docker國(guó)內(nèi)鏡像拉取和鏡像加速registry-mirrors配置修改
由于國(guó)內(nèi)訪問(wèn)直接訪問(wèn)Docker hub網(wǎng)速比較慢,拉取鏡像的時(shí)間就會(huì)比較長(zhǎng)。一般我們會(huì)使用鏡像加速或者直接從國(guó)內(nèi)的一些平臺(tái)鏡像倉(cāng)庫(kù)上拉取2017-05-05docker+nextcloud搭建個(gè)人云存儲(chǔ)系統(tǒng)的實(shí)現(xiàn)
這篇文章主要介紹了docker+nextcloud搭建個(gè)人云存儲(chǔ)系統(tǒng)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01使用Docker部署war包項(xiàng)目的實(shí)現(xiàn)
這篇文章主要介紹了使用Docker部署war包項(xiàng)目的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10Docker動(dòng)態(tài)給容器Container暴露端口操作
這篇文章主要介紹了Docker動(dòng)態(tài)給容器Container暴露端口操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-11-11