docker之容器管理篇
一、创建容器常用选项
1.1常用选项如下表:
选项 描述
1.2实例演示:
创建nginx容器:
列出当前正在运行的容器:
字段说明:
列出所有容器,包括已停止的:
[root@localhost ~]# docker container ls -a
指定容器名称、主机名和设置环境变量:
容器创建了,怎么让用户访问呢?那就用到-p选项了,从宿主机暴露一个端口到容器:
此时多个一个PORTS字段,代表宿主机监听0.0.0.0的88端口,转发到该容器80端口。
打开浏览器输入: http://宿主机IP:88
下面设置允许容器nginx03最多使用50M内存和30M的SWAP,并禁用OOM Killer
开启,关闭,重启,删除容器:
使用 docker stats 查看当前容器内存限制及使用:
查看nginx02容器的实时的内存,网络I/O CPU, 磁盘IO的使用情况
CPU限额:
允许容器最多可以使用一个半的CPU:
2、管理应用程序数据
前面讲到过容器删除,容器里产生的数据也会删除,并且在容器里操作是在可写层,会经过存储驱动管理,这种额外的抽象会降低性能。
容器的可写层存储数据,有一些缺点:
A、当容器停止运行时,数据将不会持续存在,如果另一个进程需要这些数据,则很难将数据从容器中取出。并且容器删除后,数据也会随着删除。
B、容器的可写层与容器运行的宿主机紧密耦合,无法轻松地将数据移动到其他地方。
C、容器的可写层需要存储驱动程序来管理文件系统。存储驱动程序使用Linux内核提供的联合文件系统,与直接在宿主机上写入文件相比,这种额外的抽象会降低性能。
Docker提供三种方式将数据从宿主机挂载到容器中:
D、volumes:Docker管理宿主机文件系统的一部分(/var/lib/docker/volumes)。保存数据的最佳方式。
E、bind mounts:将宿主机上的任意位置的文件或者目录挂载到容器中。
F、 tmpfs:挂载存储在主机系统的内存中,而不会写入主机的文件系统。如果不希望将数据持久存储在任何位置,可以使用tmpfs,同时避免写入容器可写层提高性能。
2.1 volumes
特点:
A、多个运行容器之间共享数据。
B、当容器停止或被移除时,该卷依然存在。
C、多个容器可以同时挂载相同的卷。
D、当明确删除卷时,卷才会被删除。
管理卷:
运行一个容器使用上面创建的卷:
可以看到容器中的数据已经存储到了nginx-vol数据卷中:
注:-v选项在早期Docker版本已经支持,而–mount是在17 CE版本后才引入的选项,初学者建议使用–mount。
清理:
也可以使用NFS外部存储,例如:
2.2bind mounts
特点:
A、从主机共享配置文件到容器。
B、在Docker主机上的开发环境和容器之间共享代码。
C、当Docker主机的文件或目录结构保证与容器所需的绑定挂载一致时。
运行一个容器挂载宿主机目录:
或者:
验证绑定:
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 我与微信审核的“相爱相杀”看个人小程序副业
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求