日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無(wú)先后,達(dá)者為師

網(wǎng)站首頁(yè) 編程語(yǔ)言 正文

docker容器狀態(tài)轉(zhuǎn)換管理命令實(shí)例詳解_docker

作者:字母哥哥 ? 更新時(shí)間: 2022-06-29 編程語(yǔ)言

前言

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 createdocker 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è)名稱(chēng)(–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:鏡像名稱(chēng)
  • COMMAND:容器內(nèi)部軟件腳本啟動(dòng)命令
  • CREATED: 容器創(chuàng)建的時(shí)間
  • STATUS:容器的運(yùn)行狀態(tài)
  • PORTS: 容器與宿主機(jī)的端口映射關(guān)系
  • NAMES: 容器的名稱(chēng)
docker logs 容器ID; //查看容器日志標(biāo)準(zhǔn)輸出

比如nginx服務(wù)的日志如下所示:

三、進(jìn)入容器內(nèi)部操作系統(tǒng)

有的時(shí)候我們通過(guò)docker psdocker 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或容器名稱(chēng)

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è)鏡像,該鏡像的命名名稱(chēng)是new-nginx-zimug

docker import - new-nginx-zimug < nginx-zimug.tar

八、commit

假設(shè)我們有這樣一種場(chǎng)景,容器啟動(dòng)之后發(fā)現(xiàn)一個(gè)配置文件參數(shù)寫(xiě)錯(cuò)了,然后通過(guò)docker exec -it進(jìn)入容器內(nèi)部對(duì)配置文件進(jìn)行了修改。
我們已經(jīng)介紹過(guò),一旦容器發(fā)生重啟,針對(duì)容器所做的任何寫(xiě)操作全部丟失。那么我們?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或容器名稱(chēng)>

查看容器資源使用情況,使用docker stats命令,可以查看CPU使用率,內(nèi)存使用率 、網(wǎng)絡(luò)IO、磁盤(pán)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é)

原文鏈接:https://blog.csdn.net/hanxiaotongtong/article/details/123981078

欄目分類(lèi)
最近更新