首页
Linux常用
docker常用
关于
Search
1
docker安装MDCX
180 阅读
2
UNRAID增加和缩小虚拟机虚拟磁盘大小
48 阅读
3
unraid添加iSCSI 发起程序
39 阅读
4
iStoreOS上使用WireGuard
19 阅读
5
docker安装WireGuard Easy
13 阅读
默认分类
docker
容器安装
Linux
数据库
群辉
软路由
unRAID
PVE
Nginx
wow
杂项
图床
飞牛
转载微信公众号文章
Docker学习
Linux学习
登录
Search
标签搜索
nginx
unraid
PVE
wow服务器
装机硬件
宏
v2ray
直通
电视盒子
相册
黑裙7.0.1
远程穿透
定时
ssh
emby
symlink
软链接
Linux
sftp
防火墙
奥黛丽·逐爱者
累计撰写
100
篇文章
累计收到
10
条评论
首页
栏目
默认分类
docker
容器安装
Linux
数据库
群辉
软路由
unRAID
PVE
Nginx
wow
杂项
图床
飞牛
转载微信公众号文章
Docker学习
Linux学习
页面
Linux常用
docker常用
关于
搜索到
5
篇与
Docker学习
的结果
2025-07-17
100个Docker容器操作命令实战大全!
容器化部署已成为现代运维的核心技能,掌握这些命令让你轻松驾驭从开发到生产的全流程。一、容器生命周期管理(18个)1. 运行容器:docker run -d --name web nginx:latest 后台启动Nginx容器2. 启动已停止容器:docker start web3. 停止运行中容器:docker stop web(发送SIGTERM信号)4. 强制停止容器:docker kill web(发送SIGKILL信号)5. 重启容器:docker restart web6. 暂停容器进程:docker pause web(冻结进程树)7. 恢复暂停容器:docker unpause web8. 删除停止的容器:docker rm web9. 强制删除运行中容器:docker rm -f web(生产环境慎用)10. 批量删除停止容器:docker container prune11. 创建容器不启动:docker create --name temp alpine sleep 360012. 容器重命名:docker rename old_name new_name13. 更新运行参数:docker update --memory 512m web 动态调整内存限制14. 设置重启策略:docker run --restart=always nginx 崩溃后自动重启15. 容器自愈检测:docker run --health-cmd="curl -f http://localhost || exit 1" --health-interval=30s nginx16. 查看健康状态:docker inspect --format='{{.State.Health.Status}}' web17. 资源限制(CPU):docker run --cpus=1.5 app 限制使用1.5核CPU18. 资源限制(内存):docker run -m 2g --memory-swap=3g app 内存+Swap限制二、容器操作与调试(15个)19. 进入交互终端:docker exec -it web /bin/bash20. 后台执行命令:docker exec -d web touch /tmp/test.log21. 查看实时日志:docker logs -f --tail 100 web(追踪最后100行)22. 查看进程列表:docker top web23. 容器详情查看:docker inspect web | jq .(配合jq解析JSON)24. 端口映射检查:docker port web25. 文件复制到容器:docker cp app.conf web:/etc/nginx/conf.d/26. 从容器复制文件:docker cp web:/var/log/nginx/error.log ./27. 查看资源统计:docker stats --no-stream(显示当前状态)28. 实时监控资源:docker stats web mysql(监控特定容器)29. 容器差异检查:docker diff web(查看文件系统变更)30. 容器提交为镜像:docker commit -c 'CMD ["nginx"]' web nginx:v2(慎用,推荐Dockerfile)31. 容器导出快照:docker export web > web.tar32. 挂载调试工具:docker run --cap-add SYS_PTRACE --security-opt seccomp=unconfined debug_tool33. 使用nsenter调试:nsenter --target $(docker inspect -f {{.State.Pid}} web) --mount --uts --ipc --net --pid三、镜像管理(12个)34. 拉取镜像:docker pull alpine:3.18(指定版本避免latest风险)35. 查看本地镜像:docker images --filter "dangling=false"(过滤悬空镜像)36. 删除镜像:docker rmi alpine:3.1737. 强制删除镜像:docker rmi -f redis(被容器使用时需加-f)38. 清理悬空镜像:docker image prune39. 导出镜像存档:docker save -o nginx.tar nginx:latest40. 导入镜像存档:docker load -i nginx.tar41. 查看镜像历史:docker history nginx42. 镜像标签管理:docker tag nginx:latest myreg.com/nginx:v143. 推送镜像到仓库:docker push myreg.com/nginx:v144. 构建镜像:docker build -t myapp:v1 --build-arg ENV=prod .45. 多阶段构建:Dockerfile中:COPY --from=builder /app/bin /usr/bin四、存储管理(10个)46. 创建匿名卷:docker run -v /data mysql(自动创建)47. 绑定主机目录:docker run -v /host/path:/container/path nginx48. 创建命名卷:docker volume create app_data49. 使用命名卷:docker run -v app_data:/var/lib/mysql mysql50. 查看卷详情:docker volume inspect app_data51. 清理未使用卷:docker volume prune52. 查看挂载点:docker inspect -f '{{ .Mounts }}' web53. 临时文件系统:docker run --tmpfs /tmp:size=100m app54. 只读挂载:docker run -v /conf:/etc/nginx:ro nginx(生产安全必备)55. 共享存储卷:docker run --volumes-from db_storage backup_tool五、网络管理(12个)56. 查看网络列表:docker network ls57. 创建自定义网络:docker network create --driver bridge my_net58. 指定容器网络:docker run --network=my_net web59. 容器别名访问:docker run --network=my_net --name web --network-alias website nginx60. 查看网络详情:docker network inspect my_net61. 连接运行中容器:docker network connect my_net existing_container62. 断开容器网络:docker network disconnect my_net container63. 端口随机映射:docker run -P nginx(自动绑定随机主机端口)64. 指定端口映射:docker run -p 8080:80 -p 443:443 nginx65. 主机模式网络:docker run --network=host nginx(共享主机网络栈)66. 容器间直连:docker run --link redis:db app(传统方式,推荐使用自定义网络)67. DNS配置覆盖:docker run --dns 8.8.8.8 --dns-search example.com alpine六、生产运维实践(15个)68. 日志驱动设置:docker run --log-driver=json-file --log-opt max-size=10m nginx69. 日志标签添加:docker run --log-opt tag="{{.Name}}/{{.ID}}" nginx70. 环境变量注入:docker run -e TZ=Asia/Shanghai -e APP_ENV=prod app71. 时区同步配置:docker run -v /etc/localtime:/etc/localtime:ro app72. 容器自启策略:docker run --restart=on-failure:5 app(失败时最多重启5次)73. 内核参数调整:docker run --sysctl net.core.somaxconn=1024 app74. 容器资源限制:docker run --cpus=".5" -m 500m --blkio-weight=500 app75. OOM优先级设置:docker run --oom-score-adj=500 app(值越高越易被kill)76. 容器用户隔离:docker run --user 1000:1000 app(避免root运行)77. 只读文件系统:docker run --read-only app(需配合tmpfs使用)78. 能力控制:docker run --cap-add NET_ADMIN --cap-drop SYS_ADMIN app79. 安全加固:docker run --security-opt no-new-privileges app(禁止提权)80. AppArmor配置:docker run --security-opt apparmor=my_profile app81. SELinux标签:docker run --security-opt label=type:container_t app82. 设备访问授权:docker run --device=/dev/snd:/dev/snd:rw audio_app七、集群与编排(10个)83. 初始化Swarm:docker swarm init --advertise-addr 192.168.1.10084. 加入Swarm集群:docker swarm join --token SWMTKN... 192.168.1.100:237785. 部署Stack服务:docker stack deploy -c docker-compose.yml myapp86. 查看服务列表:docker service ls87. 服务伸缩操作:docker service scale web=588. 滚动更新配置:docker service update --image nginx:1.23 web89. 回滚服务版本:docker service rollback web90. 查看服务日志:docker service logs -f web91. 节点状态检查:docker node ls92. 服务约束部署:docker service create --constraint 'node.role==worker' nginx八、系统维护与监控(8个)93. 查看Docker版本:docker version94. 系统全局信息:docker info95. 磁盘空间清理:docker system prune -af(慎用!清理所有未用资源)96. 事件实时监控:docker events --filter 'event=die'(捕获容器退出事件)97. 构建缓存清理:docker builder prune98. 检查容器配置:docker config ls(Swarm模式)99. 容器漏洞扫描:docker scan nginx:latest(需登录Docker Hub)100. 资源使用报告:docker system df -v(详细磁盘占用分析)生产环境五大黄金法则1. 镜像版本固化:禁止使用latest标签,必须明确版本号(如nginx:1.25.3)2. 资源硬性限制:所有容器必须设置--memory和--cpus限制3. 日志轮转机制:通过max-size和max-file防止日志撑爆磁盘4. 非root用户运行:使用--user指定非特权用户(UID>1000)5. 只读文件系统:配合tmpfs实现写入路径最小化重要提醒:永远不要在容器内存储重要数据!所有持久化数据必须通过:• 绑定挂载(Bind Mounts)• 命名卷(Named Volumes)• 分布式存储(NFS/Ceph等)掌握这100个命令只是起点,真正的容器高手深谙以下原则:✅ 容器即不可变基础设施(Immutable Infrastructure)✅ 日志输出到stdout/stderr而非文件✅ 单容器单进程模型(Sidecar模式除外)✅ 镜像构建遵循最小化原则(如Alpine基础镜像)记住: 最危险的Docker命令不是rm -f,而是缺乏生产级意识的随意操作。 以上,既然看到这里了,如果觉得不错,随手点个赞、在看、转发三连吧,如果想第一时间收到推送,也可以给我个星标⭐~谢谢你看我的文章,我们,下次再见。
2025年07月17日
1 阅读
0 评论
0 点赞
2025-07-10
【Docker学习】100条常用命令整理,运维必备
一、服务管理命令systemctl start docker:启动 Docker 服务。在安装好 Docker 后,首次使用或服务停止后需要启动时使用该命令。systemctl stop docker:停止 Docker 服务。当需要对 Docker 进行维护、更新或临时停止使用时,可执行此命令。systemctl restart docker:重启 Docker 服务。常用于使新的配置生效,比如修改了 Docker 的配置文件后,需要重启服务。systemctl status docker:查看 Docker 服务状态。可以了解 Docker 服务是否正在运行,以及运行状态的详细信息,如启动时间、进程 ID 等。systemctl enable docker:设置 Docker 服务开机自启。确保每次系统启动时,Docker 服务都能自动运行,方便后续使用。systemctl disable docker:取消 Docker 服务开机自启。如果不想让 Docker 在开机时自动启动,可使用此命令。docker info:查看 Docker 的系统信息,包括镜像和容器的数量、存储驱动、运行时等详细信息。有助于了解当前 Docker 环境的整体情况。docker --help:查看 Docker 的帮助文档。当对某个 Docker 命令的用法不确定时,可通过此命令获取详细的帮助信息。docker version:查看 Docker 的版本信息,包括客户端和服务端的版本号。在排查一些与版本相关的问题时非常有用。二、镜像管理命令docker images:列出本地所有镜像。展示镜像的仓库名称、标签、镜像 ID、创建时间和大小等信息,方便管理和查看本地镜像资源。docker search [镜像名称]:在 Docker Hub 上搜索指定名称的镜像。可根据搜索结果选择合适的镜像进行拉取和使用,例如docker search nginx。docker pull [镜像名称[:标签]]:从 Docker Hub 或其他镜像仓库拉取指定镜像到本地。若不指定标签,默认拉取最新版本(latest),如docker pull ubuntu:20.04。docker rmi [镜像名称或ID]:删除本地指定的镜像。注意,若镜像正在被容器使用,则无法删除,需先停止并删除相关容器。可同时删除多个镜像,如docker rmi ubuntu:20.04 nginx:latest。docker build -t [目标镜像名称:标签] [Dockerfile所在路径]:根据指定路径下的 Dockerfile 构建镜像。-t参数用于指定目标镜像的名称和标签,构建过程会根据 Dockerfile 中的指令逐步创建镜像。docker tag [源镜像名称:标签] [目标镜像名称:标签]:为镜像添加标签。可用于给镜像打上新的版本号或别名,方便区分和管理不同版本的镜像,例如docker tag ubuntu:20.04 ubuntu:latest。docker push [镜像名称:标签]:将本地镜像推送到 Docker Hub 或其他远程镜像仓库。需先登录到对应的仓库,如docker push myusername/nginx:latest。docker history [镜像名称或ID]:查看镜像的构建历史。展示每一层镜像的创建信息,包括创建时间、执行的命令等,有助于了解镜像的构建过程和内容。docker inspect [镜像名称或ID]:查看镜像的详细信息,以 JSON 格式输出。包含镜像的配置、环境变量、挂载点等各种详细信息,对于排查镜像相关问题非常有帮助。docker save -o [保存文件名.tar] [镜像名称或ID]:将镜像保存为一个 tar 文件,便于在不同环境中传输和使用。例如docker save -o ubuntu_20.04.tar ubuntu:20.04。docker load -i [保存文件名.tar]:从 tar 文件中加载镜像到本地。与docker save命令相对应,用于在新环境中恢复镜像。docker import [容器归档文件路径] [目标镜像名称:标签]:从容器的归档文件创建镜像。可将容器的当前状态保存为一个新的镜像,常用于自定义镜像的制作。三、容器管理命令docker run [选项] [镜像名称[:标签]] [容器启动命令]:创建并启动一个容器。常见选项包括-d(后台运行)、-p(端口映射)、-v(卷挂载)等,例如docker run -d -p 80:80 nginx,表示在后台运行一个 nginx 容器,并将宿主机的 80 端口映射到容器的 80 端口。docker ps:列出当前正在运行的容器。显示容器的 ID、名称、使用的镜像、运行状态、端口映射等信息。docker ps -a:列出所有容器,包括已停止的容器。方便查看所有创建过的容器记录。docker start [容器名称或ID]:启动一个已停止的容器。例如docker start mynginx,可将名为 mynginx 的容器启动。docker stop [容器名称或ID]:停止一个正在运行的容器。通过向容器发送停止信号,让容器正常停止运行。docker restart [容器名称或ID]:重启一个容器。先停止容器,然后再启动它,常用于使容器内的新配置生效。docker rm [容器名称或ID]:删除一个已停止的容器。若容器正在运行,需先停止后才能删除,也可使用-f参数强制删除运行中的容器。docker kill [容器名称或ID]:强制终止一个正在运行的容器。通过发送 SIGKILL 信号立即停止容器,可能导致数据丢失,一般在容器无法正常停止时使用。docker exec -it [容器名称或ID] [要执行的命令]:在一个正在运行的容器内执行命令。例如docker exec -it mynginx bash,可进入 mynginx 容器的 bash 终端,进行交互式操作。docker attach [容器名称或ID]:连接到一个正在运行的容器的标准输入、输出和错误输出流。与docker exec不同,docker attach会直接进入容器的主进程,退出时可能会导致容器停止。docker diff [容器名称或ID]:查看容器内文件系统的变化。显示容器内新增、修改和删除的文件和目录,有助于了解容器运行过程中的文件操作情况。docker commit -m "[提交信息]" -a "[作者信息]" [容器名称或ID] [目标镜像名称:标签]:从一个运行中的容器创建一个新的镜像。-m参数用于添加提交信息,-a参数指定作者信息,例如docker commit -m "updated nginx config" -a "John Doe" mynginx mynewnginx:1.0。docker pause [容器名称或ID]:暂停容器内的所有进程。容器状态变为暂停,但资源仍被占用,可通过docker unpause恢复。docker unpause [容器名称或ID]:恢复暂停的容器内的所有进程,使容器继续正常运行。docker top [容器名称或ID]:查看容器内正在运行的进程信息,类似于在宿主机上使用top命令查看进程。docker stats [容器名称或ID]:实时查看容器的资源使用情况,包括 CPU、内存、网络、磁盘 I/O 等指标。docker cp [容器名称或ID]:[容器内文件路径] [宿主机目标路径]:从容器内复制文件或目录到宿主机。也可反向操作,将宿主机文件复制到容器内,例如docker cp mynginx:/etc/nginx/nginx.conf /tmp/。docker logs [容器名称或ID]:查看容器的日志输出。可用于排查容器内应用程序的运行问题,例如查看 Web 服务器的访问日志或应用程序的错误日志。docker logs -f [容器名称或ID]:实时跟踪容器的日志输出,类似于在 Linux 系统中使用tail -f命令查看日志文件,方便实时监控容器的运行状态。docker logs --tail=[行数] [容器名称或ID]:查看容器日志的最后指定行数,例如docker logs --tail=100 mynginx,可查看 mynginx 容器日志的最后 100 行。四、网络管理命令docker network ls:列出所有 Docker 网络。展示网络的名称、ID、驱动类型、子网等信息,方便管理和查看当前的网络配置。docker network create [网络名称]:创建一个新的 Docker 网络。默认创建的是桥接网络,也可通过指定--driver参数创建其他类型的网络,如docker network create --driver=overlay myoverlaynet。docker network inspect [网络名称或ID]:查看指定 Docker 网络的详细信息,以 JSON 格式输出。包含网络的配置、连接的容器、子网掩码、网关等详细信息,有助于排查网络相关问题。docker network rm [网络名称或ID]:删除指定的 Docker 网络。注意,若网络中还有容器连接,则无法删除,需先断开容器与网络的连接。docker network connect [网络名称或ID] [容器名称或ID]:将容器连接到指定的网络。使容器能够与该网络中的其他容器进行通信,例如docker network connect mynet mynginx。docker network disconnect [网络名称或ID] [容器名称或ID]:将容器从指定的网络中断开连接。容器将无法再与该网络中的其他容器通信,但仍可通过其他网络进行通信。docker run --network=[网络名称或ID] [镜像名称[:标签]]:在创建容器时指定容器使用的网络。例如docker run --network=mynet -d nginx,创建一个使用 mynet 网络的 nginx 容器。五、数据卷管理命令docker volume ls:列出所有 Docker 数据卷。展示数据卷的名称、驱动、挂载点等信息,方便管理和查看数据卷资源。docker volume create [数据卷名称]:创建一个新的 Docker 数据卷。数据卷用于在容器之间或容器与宿主机之间共享数据,可持久化保存数据。docker volume inspect [数据卷名称]:查看指定 Docker 数据卷的详细信息,以 JSON 格式输出。包含数据卷的创建时间、挂载路径、使用的驱动等详细信息。docker volume rm [数据卷名称]:删除指定的 Docker 数据卷。注意,若数据卷正在被容器使用,则无法删除,需先停止并删除相关容器。docker run -v [数据卷名称]:[容器内挂载路径] [镜像名称[:标签]]:在创建容器时挂载数据卷到容器内。例如docker run -v myvolume:/data -d mysql,将名为 myvolume 的数据卷挂载到 mysql 容器的 /data 目录。docker run -v [宿主机路径]:[容器内挂载路径]:在创建容器时将宿主机的目录挂载到容器内。实现容器与宿主机之间的数据共享,如docker run -v /hostdata:/containerdata -d ubuntu。docker run -v [宿主机路径]:[容器内挂载路径]:ro:在创建容器时将宿主机的目录以只读方式挂载到容器内。容器只能读取挂载目录中的数据,无法进行写入操作,例如docker run -v /hostdata:/containerdata:ro -d ubuntu。六、其他常用命令docker system df:查看 Docker 系统的磁盘使用情况,包括镜像、容器、数据卷占用的磁盘空间。有助于了解系统资源的使用情况,及时清理不必要的资源。docker system prune:清理 Docker 系统中未使用的资源,包括未使用的镜像、容器、网络和数据卷。释放磁盘空间,优化系统性能。docker builder prune:清理 Docker 构建缓存。在构建镜像过程中,会产生一些缓存文件,使用此命令可清理这些缓存,减少磁盘占用。docker swarm init:初始化一个 Docker Swarm 集群,将当前节点作为管理节点。用于搭建分布式容器编排环境,实现容器的集群化管理。docker swarm join --token [令牌] [管理节点地址]:将当前节点加入到指定的 Docker Swarm 集群中。需要从管理节点获取加入令牌,实现集群的扩展。docker stack deploy -c [docker-compose.yml文件路径] [堆栈名称]:使用 docker - compose 文件部署一个堆栈到 Docker Swarm 集群。方便在集群环境中部署和管理多个相关的容器服务。docker-compose up:在当前目录下根据 docker - compose.yml 文件启动并运行所有服务容器。常用于本地开发和测试环境中,一键启动多个相关的容器服务。docker-compose down:停止并删除由 docker - compose.yml 文件定义的所有服务容器、网络和数据卷。用于清理环境,停止相关服务的运行。docker-compose build:根据 docker - compose.yml 文件构建镜像。如果镜像已经存在,会根据文件中的定义更新镜像。docker-compose ps:列出由 docker - compose.yml 文件定义的所有服务容器的运行状态,方便查看当前启动的容器情况。docker-compose logs:查看由 docker - compose.yml 文件定义的所有服务容器的日志输出,方便排查多个容器服务的运行问题。docker-compose restart:重启由 docker - compose.yml 文件定义的所有服务容器,使新的配置生效。docker-compose stop:停止由 docker - compose.yml 文件定义的所有服务容器,但保留容器的状态和数据。docker-compose start:启动之前停止的由 docker - compose.yml 文件定义的所有服务容器。docker secret create [秘密名称] [文件路径]:在 Docker Swarm 集群中创建一个秘密,用于存储敏感信息,如密码、密钥等。通过文件路径指定要存储的秘密内容。docker config create [配置名称] [文件路径]:在 Docker Swarm 集群中创建一个配置,用于存储应用程序的配置文件。通过文件路径指定要存储的配置内容。docker service create --name [服务名称] --replicas [副本数量] [镜像名称[:标签]]:在 Docker Swarm 集群中创建一个服务,指定服务名称、副本数量和使用的镜像。例如docker service create --name mynginx --replicas 3 nginx,创建一个名为 mynginx 的服务,包含 3 个 nginx 容器副本。docker service update --replicas [新副本数量] [服务名称]:更新 Docker Swarm 集群中服务的副本数量。例如docker service update --replicas 5 mynginx,将 mynginx 服务的副本数量更新为 5 个。docker service rm [服务名称]:删除 Docker Swarm 集群中的指定服务,停止并删除服务的所有容器副本。docker service scale [服务名称]=[副本数量]:调整 Docker Swarm 集群中服务的副本数量,与docker service update --replicas命令功能类似。例如docker service scale mynginx = 4,将 mynginx 服务的副本数量调整为 4 个。往期推荐【K8s学习】常用命令 100 条,建议收藏!【Windows学习】整理100条命令大全,效率拉满【网络学习】display查看命令大全
2025年07月10日
2 阅读
0 评论
0 点赞
2025-07-10
如何减少 Docker 日志大小,有效节省磁盘空间
Docker 是一个强大的容器化平台,它允许开发者在一个独立的环境中运行应用程序。虽然 Docker 提供了很多便利,但在实际使用过程中,日志文件可能会迅速增长,占用大量的磁盘空间。本文将详细介绍如何减少 Docker 日志大小,从而有效节省磁盘空间。Docker 日志机制Docker 使用日志驱动程序来管理和存储容器日志。默认情况下,Docker 使用 json-file 日志驱动程序,它将所有容器的标准输出和标准错误日志记录到 JSON 文件中。这些日志文件会不断增长,尤其是在高负载或长时间运行的容器中。检查当前日志设置在优化 Docker 日志之前,首先需要了解当前的日志设置。可以使用以下命令来查看当前 Docker 守护进程的配置:docker info | grep "Logging Driver"这将显示当前使用的日志驱动程序。默认情况下,通常是 json-file。日志轮转(Log Rotation)日志轮转是一种有效的减少日志大小的方法。它通过限制日志文件的大小和数量来防止日志文件无限制地增长。可以通过以下步骤来配置 Docker 的日志轮转。修改 Docker 守护进程配置编辑 Docker 守护进程的配置文件(通常位于 /etc/docker/daemon.json),添加以下内容:{ "log-driver": "json-file", "log-opts": { "max-size": "10m", "max-file": "3" }}默认的是:在这个示例中,max-size 设置为 10MB,max-file 设置为 3,这意味着每个日志文件最大为 10MB,最多保留 3 个文件。重新启动 Docker配置文件修改后,需要重新启动 Docker 守护进程以使更改生效:sudo systemctl restart docker使用其他日志驱动程序除了 json-file,Docker 还支持多种日志驱动程序,如 syslog、journald、gelf 等。选择适合的日志驱动程序可以更有效地管理日志。Syslog 日志驱动程序syslog 是一个常用的日志系统,可以集中管理和存储日志。使用 syslog 作为日志驱动程序可以将日志发送到集中式的日志服务器。在 /etc/docker/daemon.json 中配置 syslog:{ "log-driver": "syslog", "log-opts": { "syslog-address": "tcp://localhost:514", "tag": "{{.Name}}" }}重启 Docker 以应用更改:sudo systemctl restart docker使用 Docker Compose 配置日志对于使用 Docker Compose 管理的应用,可以在 docker-compose.yml 文件中配置日志选项:version: '3.8'services: web: image: nginx logging: driver: "json-file" options: max-size: "10m" max-file: "3"这种方法可以为每个服务单独配置日志策略,提供更灵活的日志管理。清理旧日志即使配置了日志轮转,仍可能需要手动清理旧日志以释放磁盘空间。以下是一些常用的日志清理方法。使用 docker system prunedocker system prune 命令可以清理未使用的容器、网络、图像和构建缓存:docker system prune -f手动删除日志文件可以手动删除 Docker 日志文件来释放空间。Docker 日志文件通常位于 /var/lib/docker/containers/<container-id>/ 目录下。使用以下命令找到并删除日志文件:sudo rm /var/lib/docker/containers/*/*.log日志聚合和外部存储将日志发送到外部存储或日志聚合系统(如 ELK Stack、Splunk)可以减少本地磁盘空间的占用。使用 ELK StackELK Stack(Elasticsearch, Logstash, Kibana)是一个常用的日志聚合和分析工具。可以通过以下步骤将 Docker 日志发送到 ELK Stack:安装并配置 ELK Stack。使用 gelf 日志驱动程序将日志发送到 Logstash:{ "log-driver": "gelf", "log-opts": { "gelf-address": "udp://logstash-server:12201", "tag": "{{.Name}}" }}在 logstash.conf 中配置 Logstash 以接收并处理 Docker 日志:input { gelf { port => 12201 }}output { elasticsearch { hosts => ["localhost:9200"] index => "docker-logs-%{+YYYY.MM.dd}" }}通过这种方法,可以将 Docker 日志集中存储和分析,而不占用本地磁盘空间。实时日志监控实时监控日志可以帮助快速发现和解决问题,避免日志文件无限制增长。常用的监控工具包括 Prometheus 和 Grafana。使用 Prometheus 和 Grafana安装并配置 Prometheus 和 Grafana。使用 node-exporter 收集 Docker 主机的系统指标,包括磁盘使用情况。在 Grafana 中配置仪表板,监控 Docker 日志文件的大小和增长率。通过实时监控,可以及时采取措施,防止日志文件过大。
2025年07月10日
1 阅读
0 评论
0 点赞
2025-07-06
Docker容器的配置和管理
https://mp.weixin.qq.com/s/F-yv_vvCO_qMlt_e_iuYlA1、安装Docker1.安装依赖包yum install -y yum-utils device-mapper-persistent-data lvm22.配置docker yum源yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo3.安装dockeryum install -y docker-ce4.启动dockersystemctl daemon-reloadsystemctl enable docker --nowsystemctl restart docker图1 docker安装引擎mkdir /etc/docker -psudo tee /etc/docker/daemon.json <<-'EOF'{ "registry-mirrors": [ "https://docker.credclouds.com", "https://k8s.credclouds.com", "https://quay.credclouds.com", "https://gcr.credclouds.com", "https://k8s-gcr.credclouds.com", "https://ghcr.credclouds.com", "https://do.nark.eu.org", "https://docker.m.daocloud.io", "https://docker.nju.edu.cn", "https://docker.mirrors.sjtug.sjtu.edu.cn", "https://docker.1panel.live", "https://docker.rainbond.cc" ], "data-root": "/etc/docker"}EOFsystemctl daemon-reloadsystemctl restart docker图2 配置镜像加速器图3 优化效果验证2、安装Portainer容器可视化管理mkdir -p /usr/local/docker/portainerdocker run -it -d -p 9000:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v /usr/local/docker/portainer:/data portainer/portainer图4 安装portainer访问地址:http://10.0.0.100:9000图5 portainer可视化界面图6 创建容器 图7 生命周期管理3、利用Dockerfile新建一个容器新镜像mkdir custom_centos && cd custom_centos# 基础镜像FROM centos:7 # 设置学号变量ARG STUDENT_ID=2024031390 # 1. 更换为阿里云YUM源(解决网络问题)RUN rm -f /etc/yum.repos.d/*.repo && \ curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo && \ curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo && \ sed -i 's|^#baseurl|baseurl|g' /etc/yum.repos.d/CentOS-Base.repo && \ sed -i 's|^mirrorlist|#mirrorlist|g' /etc/yum.repos.d/CentOS-Base.repo && \ sed -i 's|//[^/]*/|//mirrors.aliyun.com/|g' /etc/yum.repos.d/CentOS-Base.repo # 2. 安装基础工具(分步执行+错误处理)RUN yum makecache fast && \ yum install -y vim && \ yum install -y openssh-server && \ yum install -y net-tools bind-utils iproute lsof telnet traceroute nc tcpdump wget curl rsync # 3. 配置SSHRUN ssh-keygen -A && \ echo "root:${STUDENT_ID}" | chpasswd && \ sed -i 's/#PermitRootLogin yes/PermitRootLogin yes/' /etc/ssh/sshd_config && \ sed -i 's/UsePAM yes/UsePAM no/' /etc/ssh/sshd_config # 4. 清理缓存减小镜像大小RUN yum clean all && rm -rf /var/cache/yum # 设置容器入口CMD ["/usr/sbin/sshd", "-D"] # 暴露SSH端口EXPOSE 22docker build -t 2024031390:v1 --build-arg STUDENT_ID=2024031390 .图8 新建新镜像# 启动测试容器docker run -d -p 2222:22 --name test_ssh 2024031390:v1# 测试SSH登录 (密码:2024031390)ssh root@localhost -p 2222# 测试文件传输 (宿主机→容器)echo "hello test" > test.txtdocker cp /root/test.txt test_ssh:/root/# 测试文件传输 (容器→宿主机)docker exec test_ssh touch /root/a.txtdocker cp test_ssh:/root/a.txt ./图9 ssh登陆容器图10 容器和宿主机之间互传文件在node2-2024031390部署harborcurl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-composechmod +x /usr/local/bin/docker-compose wget https://github.com/goharbor/harbor/releases/download/v2.5.0/harbor-offline-installer-v2.5.0.tgztar xvf harbor-offline-installer-v2.5.0.tgzcd harbor # 修改配置文件cp harbor.yml.tmpl harbor.ymlsed -i 's/hostname: reg.mydomain.com/hostname: node2-2024031390/' harbor.ymlsed -i 's/port: 80/port: 8080/' harbor.yml./install.sh图11 harbor搭建 sudo tee /etc/docker/daemon.json <<-'EOF'{ "registry-mirrors": [ "https://docker.credclouds.com", "https://k8s.credclouds.com", "https://quay.credclouds.com", "https://gcr.credclouds.com", "https://k8s-gcr.credclouds.com", "https://ghcr.credclouds.com", "https://do.nark.eu.org", "https://docker.m.daocloud.io", "https://docker.nju.edu.cn", "https://docker.mirrors.sjtug.sjtu.edu.cn", "https://docker.1panel.live", "https://docker.rainbond.cc" ], "data-root": "/etc/docker", "insecure-registries": ["10.0.0.120:8080"]}EOFsystemctl restart dockerdocker login 10.0.0.120:8080 -u admin -p Harbor12345docker tag 2024031390:v1 10.0.0.120:8080/library/2024031390:v1docker push 10.0.0.120:8080/library/2024031390:v1图12 将镜像推送到Harbor仓库图13 harbor查看镜像4、在node1上新建一个容器,通过与宿主机的端口1000.1001,1002映射分别访问“首页是班级+姓名”的个性化网站、“小鸟飞飞”html5游戏网站和“Nginx默认首页”网站。mkdir -p /home/2024031390/nginx/{sites,conf}mkdir /home/2024031390/nginx/sites/personalcat > /home/2024031390/nginx/sites/personal/index.html <<EOF<!DOCTYPE html><html><head> <title>my site</title></head><body> <h1>I am 2024031390 , welcome to cloud computing class</h1></body></html>EOFmkdir /home/2024031390/nginx/sites/gamecd /home/2024031390/nginx/sites/gameunzip xiaoniaofeifei.zipcat > /home/2024031390/nginx/conf/default.conf <<EOF# 默认网站 (1002端口)server { listen 1002; server_name localhost; location / { root /usr/share/nginx/html; index index.html index.htm; }} # 个人网站 (1000端口)server { listen 1000; server_name localhost; location / { root /usr/share/nginx/personal; index index.html index.htm; }} # 游戏网站 (1001端口)server { listen 1001; server_name localhost; location / { root /usr/share/nginx/game; index index.html index.htm; }}EOFdocker run -d \ --name nginx-multisite \ -p 1000:1000 \ -p 1001:1001 \ -p 1002:1002 \ -v /home/2024031390/nginx/conf/default.conf:/etc/nginx/conf.d/default.conf \ -v /home/2024031390/nginx/sites/personal:/usr/share/nginx/personal \ -v /home/2024031390/nginx/sites/game:/usr/share/nginx/game \ nginx:latest图14 多端口多网站访问实例启动在物理机上打开浏览器测试验证:图15 nginx默认首页图16 个人网站 图17 小鸟飞飞的小游戏5、通过docker-compose编排工具构建并运行一个综合应用程序,至少含有2个关联容器。mkdir wordpresscd wordpressvi docker-compose.ymlversion: '3.8' services: # WordPress 前端服务 wordpress: image: wordpress:latest container_name: wp-app restart: always ports: - "8080:8081" environment: WORDPRESS_DB_HOST: db WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: Admin@123 WORDPRESS_DB_NAME: wordpress volumes: - wordpress_data:/var/www/html depends_on: - db networks: - app-network # MySQL 数据库服务 db: image: mysql:8.0 container_name: wp-db restart: always environment: MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: Admin@123 MYSQL_ROOT_PASSWORD: Admin@123 volumes: - db_data:/var/lib/mysql networks: - app-network # 定义存储卷volumes: wordpress_data: db_data: # 定义网络networks: app-network: driver: bridgedocker-compose up -ddocker-compose ps图18 容器启动访问应用程序:http://10.0.0.100:8080图19 wordpress站点
2025年07月06日
2 阅读
0 评论
0 点赞
2025-07-06
Docker使用教程和镜像加速
字数 853,阅读大约需 5 分钟安装Docker官方安装脚本:curl -fsSL https://get.docker.com | sh国内一键安装脚本:bash <(curl -sSL https://emohe.cn/docker.sh)手动离线安装Docker下载Docker:• 官方文件下载地址:https://download.docker.com/linux/static/stable/x86_64/• 清华大学下载地址 :https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/static/stable/x86_64/解压文件(替换版本号):tar xzvf docker-26.1.3.tgz sudo mv docker/* /usr/local/bin/创建Docker服务文件:sudo vim /etc/systemd/system/docker.service添加以下内容:[Unit]Description=Docker Application Container EngineAfter=network-online.target firewalld.serviceWants=network-online.target[Service]Type=notifyExecStart=/usr/local/bin/dockerdExecReload=/bin/kill -s HUP $MAINPIDRestart=alwaysRestartSec=2StartLimitBurst=3StartLimitInterval=60sLimitNOFILE=infinityLimitNPROC=infinityLimitCORE=infinityDelegate=yesKillMode=process[Install]WantedBy=multi-user.target启动并启用Docker服务:sudo chmod +x /usr/local/bin/dockerdsudo systemctl daemon-reloadsudo systemctl start dockersudo systemctl enable docker查看版本:docker -v手动离线安装Docker-compose国内环境手动安装Docker-compose:点这里手动下载文件 上传到服务器的/usr/local/bin目录重命名为docker-compose:sudo cp docker-compose-linux-x86_64 /usr/local/bin/docker-compose增加执行权限:chmod +x /usr/local/bin/docker-compose验证安装:docker-compose --version注意:由于是以二进制文件安装的docker-compose,运行命令需带-,例如:docker-compose up -dDocker Hub 镜像加速国内拉取镜像有时会遇到困难,对于学习或者开发者来说很难受,此时可以配置镜像加速。配置加速地址Ubuntu 16.04+、Debian 8+、CentOS 7+:创建或修改/etc/docker/daemon.json:sudo mkdir -p /etc/dockersudo tee /etc/docker/daemon.json <<EOF{ "registry-mirrors": [ "https://docker.xuanyuan.me", "https://docker.xuanyuan.dev" ]}EOF重启服务:sudo systemctl daemon-reloadsudo systemctl restart docker提示:若不方便重启,可在拉取镜像时指定加速地址,示例:docker pull docker.xuanyuan.dev/library/mysql:5.7说明:library代表官方镜像,用户镜像需替换为对应用户名。Docker Desktop 配置对于Windows系统的Docker Desktop用户,点击右上角设置,找到Docker Engine并修改配置,示例:{ "builder": { "gc": { "defaultKeepStorage": "20GB", "enabled": true } }, "experimental": false, "registry-mirrors": [ "https://docker.xuanyuan.me", "https://docker.xuanyuan.dev" ]}点击右下角Apply & restart保存并重启。检查加速是否生效查看docker系统信息:docker info若结果中显示配置的加速地址(如Registry Mirrors下包含https://docker.xuanyuan.me和https://docker.xuanyuan.dev),则配置成功。Docker最新稳定加速源列表提供者镜像加速地址说明加速类型轩辕镜像(专业版)https://docker.xuanyuan.dev付费&稳定&可选国内cdnDocker Hub轩辕镜像(免费版)https://docker.xuanyuan.me免费&无限制Docker Hub华为云https://***.mirror.swr.myhuaweicloud.com需登录分配Docker Hub腾讯云https://mirror.ccs.tencentyun.com仅限腾讯云机器Docker Hub南京大学https://ghcr.nju.edu.cnghcr加速ghcr南京大学https://k8s.nju.edu.cnk8s加速k8sDocker常用命令功能命令说明编译镜像docker build -t 镜像名 .先docker login登录Docker Hub推送镜像docker push 用户名/镜像名需先标记镜像:docker tag 53321f173e 用户名/镜像名查看容器docker ps-a查看包括已停止的容器容器资源占用docker stats查看所有容器资源占用进入容器内部docker exec -it 容器名 sh结尾也可使用/bash创建容器网络docker network create my-networkmy-network为网络名称停止容器docker stop 容器名或ID-启动容器docker start 容器名或ID-删除镜像docker rmi -f 镜像名或ID-清除资源docker system prune清除所有未使用资源(容器、网络、镜像、缓存)
2025年07月06日
1 阅读
0 评论
0 点赞