網站首頁 編程語言 正文
前言
docker容器有三種狀態運行、停止、暫停,鏡像可以創建、運行容器,鏡像和容器也可以轉換成tar壓縮包進行存儲。本文為大家介紹容器的狀態轉換命令及鏡像創建運行容器、tar包導入導出相關的命令及使用場景。
結合下文中的命令介紹來理解上面的這張圖。
一、從鏡像啟動容器
從docker鏡像啟動一個容器的語法如下,使用docker run
命令。
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
常用options說明,docker create
與docker run
命令參數幾乎一致,只是docker run
創建并運行容器,docker create
只創建(可以docker ps -a
查看到)不運行容器。
option | 作用 |
---|---|
-d | 守護進程,后臺運行該容器 |
-v | 目錄映射,容器目錄掛載到宿主機目錄,格式:宿主機目錄:容器目錄 |
-p | 指定端口映射,格式:主機(宿主)端口:容器端口 |
-P | 隨機端口映射,容器內部端口隨機映射到主機的端口 |
–name nginx-zimug | 容器名字nginx-zimug |
-m, --memory bytes | 設置容器使用內存最大值 |
-h, --hostname string | 指定容器的 hostname |
–dns 8.8.8.8 | 指定容器 dns 服務器8.8.8.8 |
-e JAVA_HOME=“路徑” | 設置環境變量,如JAVA_HOME |
–rm | 容器退出時,刪除容器及容器目錄 |
示例一:在后臺(-d)運行一個名稱(–name)為nginx-zimug的容器,將容器的80端口映射到宿主機80端口
docker run -d --name nginx-zimug -p 80:80 nginx
示例二:如果不加-d會在Linux終端下輸出容器的標準輸入輸出日志,當退出終端時,容器停止運行。這種模式通常不用于生產,常用于調試容器。
docker run --rm --name nginx-zimug -p 80:80 nginx
--rm
參數用于容器運行時停止之后,直接刪除容器,而不是讓容器進入stoped狀態。
示例三:-v
表示宿主機目錄與容器目錄的映射關系
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 //查看運行中running狀態的容器 docker ps –a //查看所有狀態的容器(包含running、paused、stopped) docker container ls //等同于docker ps docker container ls –a //等同于docker ps –a
查看的結果如下:
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:容器內部軟件腳本啟動命令
- CREATED: 容器創建的時間
- STATUS:容器的運行狀態
- PORTS: 容器與宿主機的端口映射關系
- NAMES: 容器的名稱
docker logs 容器ID; //查看容器日志標準輸出
比如nginx服務的日志如下所示:
三、進入容器內部操作系統
有的時候我們通過docker ps
和docker logs
的信息很難判斷容器內部服務的運行情況。這個時候我們就需要進入到容器內部操作系統,使用下面的命令。
docker exec -it 容器ID /bin/bash
進入到容器內部操作系統之后,想查看什么信息,就和常規使用linux命令是一樣的。退出容器使用exit命令。
四、停止容器暫停容器
通過docker ps
找到處于運行狀態的容器id或容器名稱
docker stop 9be696a0c283 //停止正在運行容器 docker container stop nginx-zimug //停止正運行容器(ID或Names)
執行該命令后容器進入stoped狀態,不再提供服務,不占用宿主機資源。stopped狀態的容器可以再次被啟動。
docker pause 容器名/容器ID; //暫停容器服務 docker unpause 容器名/容器ID; //恢復容器服務
除了stop停止容器,還有一種方法是暫停容器服務,如上命令所示。被暫停的容器不再對外服務,但是仍然占用宿主機資源。這種方式并不常用!
五、啟動stopped狀態的容器
通過docker ps -a
可以找到處于stopped狀態的容器信息。使用下面命令可以讓stopped狀態的容器再次進入運行狀態。
docker start 容器名/容器ID
不論容器處于什么狀態,如果想重啟容器,可以使用下面的命令。
docker restart 容器名/容器ID //重啟容器(根據ID或NAMES)
六、刪除容器
如果想要刪除容器,一定要讓容器處于stopped狀態才可以。
docker rm 容器ID
七、export與import
將容器導出為tar包,生成的是該容器的快照,復刻的是容器當前的linux系統環境
docker export nginx-zimug > nginx-zimug.tar
如下所示的命令,將tar包導入生成一個鏡像,該鏡像的命名名稱是new-nginx-zimug
docker import - new-nginx-zimug < nginx-zimug.tar
八、commit
假設我們有這樣一種場景,容器啟動之后發現一個配置文件參數寫錯了,然后通過docker exec -it
進入容器內部對配置文件進行了修改。
我們已經介紹過,一旦容器發生重啟,針對容器所做的任何寫操作全部丟失。那么我們為了將容器修改之后的狀態保存下來,可以使用commit將容器運行時快照,保存為本機的一個鏡像。
docker commit -a "zimug" -m "comment" nginx-zimug nginx:zimug
比如使用下面的命令將容器nginx-zimug保存為鏡像nginx:zimug
docker commit -a "zimug" -m "comment" nginx-zimug nginx:zimug
通過docker images
查看commit產生的鏡像
# docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx zimug 7e4e3219870e 8 seconds ago 142MB
九、查看容器配置及資源使用情況
查看容器配置信息,該命令會返回一個json格式信息,如網絡配置、環境變量配置、端口配置、數據卷配置等信息。
docker inspect <容器ID或容器名稱>
查看容器資源使用情況,使用docker stats
命令,可以查看CPU使用率,內存使用率 、網絡IO、磁盤IO、進程號等信息。
# 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
命令可以查看容器內進程信息。如下問所示,一個master進程,一個worker進程。
# 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
總結
原文鏈接:https://blog.csdn.net/hanxiaotongtong/article/details/123981078
相關推薦
- 2022-01-06 解決 el-form 異步校驗導致重復校驗的問題
- 2022-07-10 JDK13版本的環境變量的配置
- 2022-09-22 git commit后,如何撤銷commit
- 2022-01-16 DOM簡介及獲取元素方法屬性總結
- 2023-03-02 Flutter有狀態組件StatefulWidget生命周期詳解_Android
- 2023-10-13 Error: cannot push because a reference that you ar
- 2022-10-01 C語言實現學生個人消費管理系統_C 語言
- 2022-10-09 ASP.NET?Core?5.0中的Host.CreateDefaultBuilder執行過程解析_
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支