☰
docker串讲v1.0
2026/10/18 6:31:16 网站建设 项目流程

1.docker run 命令资源限制

docker run -d \ --name test-nginx \ -m 256m \ --cpus=0.5 \ --cpuset-cpus="0,1" \ --ulimit nofile=65536:65536 \ nginx # 上述命令:最大内存 256M、最多 0.5 核、限定 CPU 0 和 1、最大打开文件数 65536 docker run 命令,资源限制: 1. -m 256m 容器内存上限 256MB,超过内存会触发 OOM 杀掉容器进程 2. --cpus=0.5 CPU 配额上限,最多使用 0.5 个 CPU 核心的算力 3. --cpuset-cpus="0,1 CPU 亲和性绑定,容器进程**只能跑在宿主机 0 号、1 号 CPU 核心上**,不能调度到其他核心 4.--ulimit nofile=65536:65536 容器内进程文件句柄(打开文件数量)软、硬限制都是 65536

2.docker stats

实时查看所有容器资源使用量(动态刷新,类似 top) 输出字段: CONTAINER:容器名 / ID CPU %:CPU 使用率 MEM USAGE / LIMIT:内存已使用 / 内存上限(就是 -m 设置的值) MEM %:内存占用百分比 NET I/O:网络读写 BLOCK I/O:磁盘读写 PIDS:容器内进程数量

3.查看容器静态配置

(资源限制参数),不是实时监控,是查看创建时配置

docker inspect 容器ID/容器名#docker inspect test-nginx

4.DockerUI

# DockerUI(ui-for-docker) 是一个 Docker 的 Web 可视化管理面板,网页上可视化管理镜像、容器、查看资源监控,不用敲命令 docker pull uifd/ui-for-docker #启动容器 docker run -d \ --name docker-ui \ -p 9000:9000 \ -v /var/run/docker.sock:/var/run/docker.sock \ uifd/ui-for-docker

5.Docker 存储驱动

1.写时复制+用时分配 --镜像层可多容器共享,磁盘复用,容器删除,只有上层读写层被清理,底层镜像层保留 --容器秒级启动,不用完整拷贝整个镜像文件 拉取镜像:多层只读层存在宿主机,多个容器共享。 创建容器:只创建薄薄一层可读写层,此时几乎不占用额外物理磁盘(用时分配) 容器读取文件:读底层镜像,不复制,不新增磁盘占用 容器修改镜像内文件:触发写时复制,把文件拷贝到容器读写层;写入副本时,才按需分配宿主机物理磁盘块 2.常见驱动:overlay2(现在 docker 默认存储驱动,就是基于 CoW)

6.Docker 跑应用程序

# docker pull tomcat:9.0-jdk17 # docker images # docker run -d --name mytomcat -p 8080:8080 tomcat # 进入容器 # docker exec -it mytomcat bash # cd /usr/local/tomcat # rm -rf webapps # mv webapps.dist webapps # exit # 宿主机创建目录 mkdir -p /opt/tomcat/webapps # 带-v挂载启动 docker run -d --name mytomcat -p 8080:8080 \ -v /opt/tomcat/webapps:/usr/local/tomcat/webapps tomcat # 查看运行容器 docker ps # 查看所有(含停止) docker ps -a # 停止容器 docker stop mytomcat # 启动已存在容器 docker start mytomcat # 删除容器(先stop) docker rm mytomcat # 删除镜像 docker rmi tomcat # 看日志 docker logs -f mytomcat

7.docker cp

作用:宿主机 ↔ 容器之间拷贝文件 / 目录,容器不管是运行中还是停止状态都可以拷贝Docker 老命令:`docker cp`;新版等价:`docker container cp` # 容器 → 宿主机 docker cp [选项] 容器名/ID:容器内路径 宿主机路径 # 宿主机 → 容器 docker cp [选项] 宿主机路径 容器名/ID:容器内路径

8.Dockerfile

设环境 ├─ FROM 基础镜像(必须第一行) ├─ RUN 构建镜像时执行命令,生成镜像层 ├─ WORKDIR 设置工作目录 └─ COPY / ADD ├─ COPY:只能拷贝**宿主机本地上下文**里的文件 └─ ADD:支持本地文件、远程URL,**自动解压tar压缩包** 开端口 └─ EXPOSE:声明容器端口,仅文档,不会真正开放端口 定命令 └─ CMD:容器默认启动命令;docker run后面参数会直接覆盖CMD 真灵巧 └─ ENTRYPOINT:容器入口主程序;run后的参数不会覆盖它,只会作为参数传给它 ----------------------------------------------------------------------- #Tomcat 示例 Dockerfile FROM tomcat:9.0-jdk17 LABEL maintainer="test@123.com" WORKDIR /usr/local/tomcat RUN rm -rf webapps/* COPY demo.war webapps/ EXPOSE 8080 CMD ["catalina.sh", "run"] #构建镜像 docker build -t mytomcat:v1 . #启动容器 docker run -d -p 8080:8080 --name mytom mytomcat:v1 #CMD定义容器默认启动命令,`docker run` 镜像名后面追加的参数,会直接覆盖掉 Dockerfile 里的 CMD #`ENTRYPOINT` 不会被覆盖,追加内容会变成 ENTRYPOINT 的参数 ## 小总结结合你整条学习线 1. FROM tomcat 基础镜像,多层只读(CoW) 2. Dockerfile 每一条指令生成只读镜像层 3. CMD/ENTRYPOINT 是容器**运行阶段**执行,不是 build 阶段 4. `docker run` 创建容器读写层,修改文件触发 CoW,磁盘按需分配 5. docker cp 拷贝文件到容器读写层 6. ENTRYPOINT 固定主程序,CMD 提供默认参数

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询