0

0

Linux如何使用Docker容器?_Linux容器部署与管理流程

雪夜

雪夜

发布时间:2025-08-06 09:28:01

|

406人浏览过

|

来源于php中文网

原创

如何在linux系统上高效安装和配置docker环境?首先确保使用主流linux发行版如ubuntu、debian、centos或fedora;其次按照步骤更新包索引、安装https工具、添加gpg密钥、配置仓库并安装docker-ce等核心组件;接着将用户加入docker组以避免sudo操作;然后配置国内镜像加速器提升拉取速度;同时确认存储驱动为overlay2;最后调整防火墙规则确保网络通畅。

Linux如何使用Docker容器?_Linux容器部署与管理流程

在Linux系统上利用Docker容器,核心在于将应用程序及其所有依赖项封装成一个轻量级、可移植的独立单元,极大地简化了软件的部署、运行和管理过程。这就像给你的应用提供了一个自带操作系统和运行环境的“小盒子”,无论在哪里,这个盒子都能以同样的方式运行。

Linux如何使用Docker容器?_Linux容器部署与管理流程

解决方案

要在Linux上高效使用Docker容器,你需要先完成Docker引擎的安装,然后掌握一系列核心操作。这并非什么高深莫测的技术,更多的是一种工作流程的转变。

首先,确保你的Linux发行版是主流的,比如Ubuntu、Debian、CentOS或Fedora。以Ubuntu为例,安装Docker通常涉及更新包索引,然后安装必要的HTTPS传输工具,接着添加Docker的官方GPG密钥,将Docker仓库添加到APT源,最后安装

docker-ce
docker-ce-cli
containerd.io

Linux如何使用Docker容器?_Linux容器部署与管理流程
# 更新包索引
sudo apt update
# 安装必要的工具
sudo apt install ca-certificates curl gnupg lsb-release
# 添加Docker官方GPG密钥
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# 设置Docker仓库
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 再次更新包索引
sudo apt update
# 安装Docker引擎
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 验证安装
sudo docker run hello-world

安装完成后,你就可以开始操作容器了。一个典型的流程是:

  1. 拉取镜像:从Docker Hub(或私有仓库)下载预构建的应用镜像。
    sudo docker pull nginx:latest
  2. 运行容器:基于镜像创建并运行一个容器实例。
    sudo docker run -d -p 80:80 --name my-nginx nginx

    这里

    -d
    表示后台运行,
    -p 80:80
    将宿主机的80端口映射到容器的80端口,
    --name
    给容器一个易记的名字。

    Linux如何使用Docker容器?_Linux容器部署与管理流程
  3. 查看容器:检查正在运行的容器。
    sudo docker ps
  4. 停止/删除容器:当不再需要时,停止并删除容器。
    sudo docker stop my-nginx
    sudo docker rm my-nginx

    这只是最基础的几步,但它已经展现了Docker在部署上的便捷性。

如何在Linux系统上高效安装和配置Docker环境?

高效地安装和配置Docker环境,远不止敲几行命令那么简单,它更关乎于后续的便捷性和安全性。在我看来,除了基础安装,有几个细节是值得注意的。

首先是用户权限配置。每次都用

sudo
来运行Docker命令会比较麻烦,也容易养成不好的习惯。将当前用户添加到
docker
用户组是常见的做法:

sudo usermod -aG docker $USER
newgrp docker # 或者直接注销再登录

这样,你就无需

sudo
也能运行Docker命令了,大大提升了日常操作的流畅度。

其次是镜像加速器的配置。如果你在中国大陆,直接从Docker Hub拉取镜像可能会非常慢,甚至超时。配置一个国内的镜像加速器是提升效率的关键。这通常涉及修改Docker的配置文件

/etc/docker/daemon.json

{
  "registry-mirrors": ["https://xxxxxx.mirror.aliyuncs.com"]
}

https://xxxxxx.mirror.aliyuncs.com
替换为你实际获取的加速器地址(例如阿里云、网易云等)。修改后,记得重启Docker服务:

sudo systemctl daemon-reload
sudo systemctl restart docker

这个小小的改动,能让你的镜像拉取速度从龟速变为飞速,那种体验上的提升是实实在在的。

再者,存储驱动的选择。Docker支持多种存储驱动(如

overlay2
aufs
devicemapper
等)。
overlay2
是目前推荐且性能较好的选择,大多数新安装的Docker默认就是它。不过,如果你遇到一些老旧系统或者特定需求,可能需要手动调整。可以通过
docker info
命令来查看当前的存储驱动。如果不是
overlay2
,可以考虑在
daemon.json
中明确指定:

{
  "storage-driver": "overlay2"
}

但请注意,更改存储驱动可能导致现有容器数据丢失,操作前务必备份。

最后,防火墙规则。Docker在运行时会修改iptables规则来处理容器的网络流量。如果你在Linux上使用了UFW或其他防火墙,需要确保Docker所需的端口(如宿主机映射的端口)没有被意外阻断。有时候,一些自定义的防火墙规则可能会和Docker的默认行为产生冲突,导致容器无法访问外部网络或外部无法访问容器。遇到这类问题,检查

iptables -L -n -v
输出,看看Docker相关的链是否正常,或者暂时禁用防火墙进行排查,也是一种思路。

mall电商系统
mall电商系统

mall项目是一套电商系统,包括前台商城系统及后台管理系统,基于SpringBoot+MyBatis实现,采用Docker容器化部署。前台商城系统包含首页门户、商品推荐、商品搜索、商品展示、购物车、订单流程、会员中心、客户服务、帮助中心等模块。后台管理系统包含商品管理、订单管理、会员管理、促销管理、运营管理、内容管理、统计报表、财务管理、权限管理、设置等模块。

下载

如何为Linux上的Docker容器进行网络配置和数据持久化?

Docker容器的网络和数据持久化是部署生产级应用时不可或缺的两个环节。如果说运行一个简单的容器是入门,那么搞定网络和数据,才是真正掌握了Docker在Linux上的应用精髓。

网络配置: Docker默认提供了几种网络模式:

  • bridge
    (桥接模式)
    :这是最常用的默认模式。每个容器都会被分配一个独立的IP地址,并通过Docker宿主机上的一个虚拟网桥(
    docker0
    )连接到宿主机的网络。容器之间可以通过IP地址互相通信,宿主机也可以通过端口映射(
    -p
    )访问容器。例如,我之前运行Nginx的例子就是典型的桥接模式。
    # 显式创建自定义桥接网络,隔离不同应用
    sudo docker network create my_app_network
    # 将容器连接到自定义网络
    sudo docker run -d --network my_app_network --name my-web-app my-image

    使用自定义桥接网络的好处在于,你可以更好地隔离不同应用的服务,并且容器之间可以通过容器名进行DNS解析,而不是依赖不稳定的IP地址。这对于微服务架构尤其有用。

  • host
    (主机模式)
    :容器直接使用宿主机的网络命名空间,共享宿主机的IP地址和端口。这意味着容器内服务的端口会直接暴露在宿主机上,不再需要端口映射。这种模式性能最好,但隔离性最差。
    sudo docker run -d --network host --name my-perf-app my-image

    我个人在需要极致性能,或者容器内服务与宿主机服务有特定端口冲突且无法避免时,会考虑使用主机模式,但通常情况下,我更倾向于桥接模式以保持隔离。

  • none
    (无网络模式)
    :容器没有网络接口,完全隔离。这在一些特殊场景下有用,比如只进行数据处理而不需要网络通信的任务。
  • container
    (容器模式)
    :一个容器共享另一个容器的网络命名空间。

实际操作中,自定义桥接网络是我最常用的方式,它兼顾了隔离性和灵活性。

数据持久化: 容器是短暂的,它们可以被创建、停止、删除。但应用程序的数据往往需要长期保存,不能随着容器的生命周期而消失。Docker提供了两种主要的数据持久化方式:

  • Volumes
    (卷)
    :这是Docker官方推荐的数据持久化方式。卷是由Docker管理的文件系统,可以独立于容器存在。即使容器被删除,卷中的数据也不会丢失。
    # 创建一个命名卷
    sudo docker volume create my_data_volume
    # 运行容器时挂载命名卷
    sudo docker run -d -p 80:80 --name my-web-app -v my_data_volume:/app/data my-image

    这里

    /app/data
    是容器内部的路径。命名卷的优势在于它由Docker管理,路径在宿主机上通常是
    /var/lib/docker/volumes/
    下,你不需要关心具体位置,只需要记住卷的名称。这使得备份和迁移变得非常方便。

  • Bind Mounts
    (绑定挂载)
    :这种方式允许你将宿主机文件系统上的任意目录或文件直接挂载到容器内部。
    # 挂载宿主机当前目录下的html文件夹到容器的/usr/share/nginx/html
    sudo docker run -d -p 80:80 --name my-nginx -v $(pwd)/html:/usr/share/nginx/html nginx

    绑定挂载的优点是灵活性极高,你可以直接在宿主机上编辑文件,容器内立即生效,这对于开发调试非常方便。但缺点是它依赖于宿主机的特定路径,可移植性不如命名卷。在我日常开发中,绑定挂载是我的首选,因为我可以实时看到代码修改的效果;而在生产环境,我更倾向于使用命名卷,因为它更健壮、更易管理。

选择哪种方式取决于你的具体需求:需要高度可移植性和Docker管理的数据,用卷;需要直接访问宿主机文件系统进行开发或配置,用绑定挂载。

Linux环境下Docker容器的故障排查与日志查看方法?

在Linux上管理Docker容器,遇到问题是常态,关键在于如何快速定位和解决。我个人觉得,掌握一套有效的故障排查和日志查看方法,比背诵所有命令更有价值。这就像医生看病,不是每个病都得过,而是知道如何诊断。

日志查看: 这是排查问题的第一步,也是最重要的一步。Docker容器的日志通常会输出到标准输出(stdout)和标准错误(stderr),Docker引擎会捕获这些输出。

  • docker logs
    :查看容器的日志。
    # 查看特定容器的所有日志
    sudo docker logs my-container
    # 实时跟踪日志输出 (类似tail -f)
    sudo docker logs -f my-container
    # 查看最近N行的日志
    sudo docker logs --tail 100 my-container
    # 查看指定时间范围内的日志
    sudo docker logs --since "2023-01-01T00:00:00" my-container

    我通常会先用

    docker logs -f
    来实时观察容器启动或运行时发生了什么,这能很快揭示出配置错误、应用崩溃或者依赖缺失等问题。如果日志量太大,我会用
    --tail
    来聚焦最新内容。

容器状态检查

  • docker ps -a
    :查看所有容器,包括已停止的。这能让你看到容器的当前状态(
    Up
    Exited
    等),以及退出码。非零的退出码通常表示容器内部的应用出现了错误。
    sudo docker ps -a

    如果一个容器反复启动又停止(

    Exited (1) ... Up N seconds
    ),那基本可以断定是应用本身有问题,可能是配置错误,也可能是代码bug。

进入容器内部排查: 有时候,光看日志不足以解决问题,你需要进入容器内部进行更细致的检查。

  • docker exec
    :在运行中的容器内执行命令。
    # 进入容器的shell环境
    sudo docker exec -it my-container bash
    # 如果容器内没有bash,尝试sh
    sudo docker exec -it my-container sh
    # 在容器内执行单个命令,比如查看文件
    sudo docker exec my-container cat /app/config.ini

    进入容器后,你可以像在普通Linux系统上一样,检查文件是否存在、权限是否正确、环境变量是否设置、网络连通性如何(例如

    ping
    外部地址),甚至运行容器内应用的调试工具。这对于定位配置路径错误、文件缺失或者网络不通等问题非常有效。

资源使用情况

  • docker stats
    :实时查看容器的CPU、内存、网络I/O和磁盘I/O使用情况。
    sudo docker stats

    如果容器内存或CPU使用率异常高,可能表明存在内存泄漏或无限循环等性能问题。

检查Docker守护进程本身: 如果所有容器都无法启动,或者Docker命令本身出现问题,那可能需要检查Docker守护进程的状态。

  • sudo systemctl status docker
    :检查Docker服务的运行状态。
  • journalctl -u docker
    :查看Docker守护进程的系统日志。
    sudo systemctl status docker
    sudo journalctl -u docker -f

    这能帮助你发现Docker引擎自身的配置问题、启动失败原因或者与系统资源的冲突。

在我处理过的许多问题中,大部分都是通过

docker logs
docker exec
结合来解决的。记住,排查问题就像侦探工作,从表象入手,逐步深入,直到找到根源。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
nginx 重启
nginx 重启

nginx重启对于网站的运维来说是非常重要的,根据不同的需求,可以选择简单重启、平滑重启或定时重启等方式。本专题为大家提供nginx重启的相关的文章、下载、课程内容,供大家免费下载体验。

245

2023.07.27

nginx 配置详解
nginx 配置详解

Nginx的配置是指设置和调整Nginx服务器的行为和功能的过程。通过配置文件,可以定义虚拟主机、HTTP请求处理、反向代理、缓存和负载均衡等功能。Nginx的配置语法简洁而强大,允许管理员根据自己的需要进行灵活的调整。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

521

2023.08.04

nginx配置详解
nginx配置详解

NGINX与其他服务类似,因为它具有以特定格式编写的基于文本的配置文件。本专题为大家提供nginx配置相关的文章,大家可以免费学习。

609

2023.08.04

tomcat和nginx有哪些区别
tomcat和nginx有哪些区别

tomcat和nginx的区别:1、应用领域;2、性能;3、功能;4、配置;5、安全性;6、扩展性;7、部署复杂性;8、社区支持;9、成本;10、日志管理。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

244

2024.02.23

nginx报404怎么解决
nginx报404怎么解决

当访问 nginx 网页服务器时遇到 404 错误,表明服务器无法找到请求资源,可以通过以下步骤解决:1. 检查文件是否存在且路径正确;2. 检查文件权限并更改为 644 或 755;3. 检查 nginx 配置,确保根目录设置正确、没有冲突配置等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

651

2024.07.09

Nginx报404错误解决方法
Nginx报404错误解决方法

解决方法:只需要加上这段配置:try_files $uri $uri/ /index.html;即可。想了解更多Nginx的相关内容,可以阅读本专题下面的文章。

3615

2024.08.07

nginx部署php项目教程汇总
nginx部署php项目教程汇总

本专题整合了nginx部署php项目教程汇总,阅读专题下面的文章了解更多详细内容。

53

2026.01.13

nginx配置文件详细教程
nginx配置文件详细教程

本专题整合了nginx配置文件相关教程详细汇总,阅读专题下面的文章了解更多详细内容。

70

2026.01.13

JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

23

2026.03.06

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 10.3万人学习

Git 教程
Git 教程

共21课时 | 4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号