3、Docker容器管理
作者:@skyflask
转载本文请注明出处:https://www.cnblogs.com/skyflask/p/10015018.html
目录
一、容器创建
1、创建命令
2、创建容器常用命令选项
3、实例
二、容器资源限制
1、常用选项
2、实例
三、管理容器
1、管理容器常用选项
一、容器创建
1、创建命令
docker container
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | [root@localhost harbor] # docker container Usage: docker container COMMAND Manage containers Commands: attach 进入容器 commit 以一个运行中的容器为基础镜像创建一个新镜像 cp 在容器和本地文件之间拷贝文件或文件 create 创建一个新的容器 diff 查看一个容器的文件或目录的变化 exec 在一个运行中的容器上执行一个命令 export 以一个tar包的形式导出一个容器的文件系统 inspect 显示一个或者多个容器的详情 kill 杀掉一个或多个运行中的容器 logs 获取某个容器的日志 ls 列出容器 pause 暂停一个或多个容器的所有进程 port 列出容器的端口映射或一个特定的映射 prune 删除所有停止的容器 rename 重命名一个容器 restart 重启一个或多个容器 rm 删除一个或多个容器 run 在一个新容器中执行一个命令 start 启动一个或多个容器 stats 展示一个容器的资源使用情况 stop 停止一个或多个容器 top 展示一个容器正在运行的进程 unpause 暂停一个或多个容器的所有进程 update 更新一个或多个容器的配置 wait 锁定一个或多个容器,然后打印出他们的退出码 |
2、创建容器常用命令选项
、
常用选项:
-t 分配一个伪终端,是为了让容器启动后有一个前台进程,因为任何一个后台进程都需要一个前台进程才能跑起来。
-d 容器在后台运行
-P 大P后面不用接端口,是把容器EXPOSE的端口到宿主机的随机端口,EXPOSE是Dockerfile里面定义的
-h 容器主机名,默认是一个随机的字符串
--name 容器的名称,默认是一个随机字符串
-network 连接容器到一个网络,比如我们自定义一个bridege
-mount 将宿主机的数据挂在到容器
-restart always 容器退出时,会不断的尝试重启
3、实例
创建一个容器,容器名为web_01,容器主机名web_01_hostname 容器会自动启动,访问宿主机的2080端口即可访问容器nginx
1 | run - d - - name web_01 - h web_01_hostname - e test = 12345 - - restart always - p 2088 : 80 nginx |
验证:
1、查看是否创建成功
2、进入容器
3、访问服务
二、容器资源限制
容器资源限制,主要是内存和cpu的限制。
1、常用选项
-memory-swappiness :设置容器使用SWAP分区的百分比,也可以设置为不使用。-1是不限制,无限制使用swap,1是不使用,也就是swap和memory的值设置成一样。不设置swap,默认是可以使用物理内存的2倍。
--oom-kill-disable :宿主机有om机制,在内存不足时,会找出使用内存最多的内存并杀掉。
·-cpus:使用cpu的数量
-cpuset-cpus:设置容器可以使用宿主机的哪几个cpu
2、实例
例1:创建一个容器,内存限制为500M,swap可以使用100M,om机制禁用。
[root@localhost ~]# docker run -d --name nginx01 --memory='500m' --memory-swap='600m' --oom-kill-disable nginx
15eb4507333d0ca3b9a1cee6a764bfeb041bf1ea084daaa176fe56fce3307841
docker stats 15eb4507333d
上图可以看出:内存限制为500M。
例2:创建一个容器,cpu限制使用1.5
docker run -d --name nginx02 --cpus="1.5" nginx
资源限制的意义:当容器被攻击时,即使让容器跑满,也不会让宿主机崩溃。
如果设置cpus=2,则容器可能会跑到200%。
三、管理容器
1、管理容器常用选项
a、docker container ls
b、docker inspect
c、docker exec
d、docker commit
我们在容器中新建文件(修改容器),然后退出容器。
我们在容器中创建文件后,退出容器,然后commit,提交新的镜像
查看镜像
用新的镜像启动容器
进入容器查看是否以是新的镜像
验证成功。
e、docker cp
1 | [root@localhost ~] # docker cp /tmp/test_copy 1e7a16a5cfd8:/ |
将宿主机的文件拷贝到容器
f、docker logs 查看容器访问日志
g、docker port 查看容器的端口
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」