当前位置:首页>Linux>Linux系统中Docker使用技能分享

Linux系统中Docker使用技能分享

  • 2026-09-02 19:21:16
Linux系统中Docker使用技能分享

Linux系统中Docker使用技能分享

在Linux系统中,Docker作为轻量级容器化技术,凭借“隔离性强、部署高效、资源占用低”的核心优势,成为开发者、运维人员必备的工具——它能快速打包应用及其依赖环境,实现“一次构建、到处运行”,彻底解决“环境不一致”的痛点。本文聚焦Linux系统下Docker的实用使用技能,从基础安装、核心操作到进阶技巧,全程贴合实战场景,兼顾新手入门与老手进阶,助力高效运用Docker开展工作。

一、前置准备:Linux系统Docker安装(新手必会)

Docker支持绝大多数Linux发行版(如CentOS、Ubuntu、Debian),不同发行版安装命令略有差异,以下是最常用的两种发行版安装方法,全程复制命令即可完成,避免复杂配置。

1. Ubuntu系统(推荐,新手首选)

Ubuntu系统对Docker支持更友好,安装步骤简洁,终端依次输入以下命令:

bash                  # 1. 更新软件包列表                  sudo apt update                  # 2. 安装必要的依赖包(允许apt通过HTTPS使用仓库)                  sudo apt install -y apt-transport-https ca-certificates curl software-properties-common                  # 3. 添加Docker官方GPG密钥(验证软件包完整性)                  curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg                  # 4. 设置Docker稳定版仓库                  echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null                  # 5. 再次更新软件包列表,安装Docker Engine                  sudo apt update                  sudo apt install -y docker-ce docker-ce-cli containerd.io                  # 6. 验证安装是否成功(启动Docker并查看版本)                  sudo systemctl start docker                  sudo docker --version

若终端显示Docker版本信息(如Docker version 24.0.7),说明安装成功。

2. CentOS系统安装

CentOS系统安装步骤与Ubuntu类似,终端依次输入:

bash                  # 1. 卸载旧版本Docker(若有)                  sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine                  # 2. 安装必要的依赖包                  sudo yum install -y yum-utils device-mapper-persistent-data lvm2                  # 3. 设置Docker官方仓库                  sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo                  # 4. 安装Docker Engine                  sudo yum install -y docker-ce docker-ce-cli containerd.io                  # 5. 启动Docker并设置开机自启(关键,避免重启系统后Docker失效)                  sudo systemctl start docker                  sudo systemctl enable docker                  # 6. 验证安装                  sudo docker --version

安装避坑要点

1必须使用sudo权限执行安装命令,否则会提示权限不足;

1若安装过程中提示“仓库无法访问”,检查网络连接,或更换国内镜像源(后续会讲);

1安装完成后,若执行docker命令仍需sudo,可配置用户权限(后续进阶技巧会讲)。

二、Docker核心基础操作(高频使用,必掌握)

Docker的核心操作围绕“镜像(Image)”和“容器(Container)”展开——镜像是应用的“模板”(包含应用及依赖环境),容器是镜像的“运行实例”,掌握以下操作,可满足日常80%的使用需求。

1. 镜像相关操作(镜像管理核心)

bash                  # 1. 搜索镜像(从Docker Hub搜索需要的镜像,如nginx、mysql)                  sudo docker search 镜像名# 示例:sudo docker search nginx                  # 2. 拉取镜像(下载镜像到本地,默认拉取最新版本,加:tag指定版本)                  sudo docker pull 镜像名:tag# 示例:sudo docker pull nginx:latest(最新版)、sudo docker pull mysql:8.0(指定8.0版本)                  # 3. 查看本地所有镜像                  sudo docker images                  # 4. 删除本地镜像(需先删除依赖该镜像的容器,否则报错)                  sudo docker rmi 镜像ID/镜像名:tag# 示例:sudo docker rmi nginx:latest                  # 5. 查看镜像详细信息                  sudo docker inspect 镜像ID/镜像名

2. 容器相关操作(实战核心,重点掌握)

bash                  # 1. 启动容器(最常用,-d后台运行,-p端口映射,--name指定容器名)                  # 格式:sudo docker run -d -p 主机端口:容器端口 --name 容器名 镜像名                  # 示例:启动nginx容器,映射主机80端口到容器80端口,后台运行,命名为my-nginx                  sudo docker run -d -p 80:80 --name my-nginx nginx:latest                  # 2. 查看正在运行的容器                  sudo docker ps                  # 3. 查看所有容器(包括停止的)                  sudo docker ps -a                  # 4. 停止容器                  sudo docker stop 容器ID/容器名# 示例:sudo docker stop my-nginx                  # 5. 启动已停止的容器                  sudo docker start 容器ID/容器名                  # 6. 重启容器                  sudo docker restart 容器ID/容器名                  # 7. 删除容器(需先停止容器,-f强制删除运行中的容器)                  sudo docker rm 容器ID/容器名# 示例:sudo docker rm my-nginx                  sudo docker rm -f 容器ID/容器名# 强制删除                  # 8. 进入容器内部(交互模式,用于调试、修改配置)                  sudo docker exec -it 容器ID/容器名 /bin/bash# 示例:sudo docker exec -it my-nginx /bin/bash                  # 退出容器:输入exit即可                  # 9. 查看容器日志(排查容器运行异常)                  sudo docker logs 容器ID/容器名# 实时查看日志:sudo docker logs -f 容器ID/容器名

基础操作避坑指南

1端口映射时,避免主机端口被占用(如80端口被Apache占用,需更换主机端口,如8080:80);

1删除镜像前,必须先删除依赖该镜像的所有容器,否则会提示“镜像被容器引用”;

1进入容器后,修改的配置的是容器内部的文件,容器重启后会丢失(需用数据卷挂载,后续进阶会讲)。

三、Docker进阶实用技能(提升效率,实战必备)

掌握基础操作后,以下进阶技能能大幅提升Docker使用效率,解决实际工作中的复杂场景(如配置持久化、加速镜像拉取、批量管理容器)。

1. 配置Docker国内镜像源(解决拉取镜像慢的问题)

默认Docker Hub镜像源在国外,拉取镜像速度慢,配置国内镜像源(如阿里云、网易云),可大幅提升拉取速度:

bash                  # 1. 新建/修改Docker配置文件(若/etc/docker/daemon.json文件不存在,直接创建)                  sudo vi /etc/docker/daemon.json                  # 2. 输入以下内容(阿里云镜像源,稳定推荐)                  {                  "registry-mirrors": [                  "https://docker.mirrors.aliyun.com",                  "https://hub-mirror.c.163.com"                  ]                  }                  # 3. 保存退出(vi编辑器:按Esc,输入:wq,回车)                  # 4. 重启Docker服务,使配置生效                  sudo systemctl daemon-reload                  sudo systemctl restart docker                  # 5. 验证配置是否生效                  sudo docker info                  # 若看到“Registry Mirrors”中显示配置的国内镜像源,说明配置成功

2. 数据卷挂载(实现容器数据持久化)

容器默认的数据存储在内部,容器删除后数据会丢失,通过数据卷(Volume)挂载,可将容器内的目录映射到主机目录,实现数据持久化(如nginx配置文件、mysql数据):

bash                  # 1. 创建数据卷(可选,也可直接挂载主机目录)                  sudo docker volume create nginx-volume                  # 2. 挂载数据卷启动容器(将nginx容器的/usr/share/nginx/html目录,挂载到主机的/root/nginx/html目录)                  # 方式1:挂载自定义数据卷                  sudo docker run -d -p 80:80 --name my-nginx -v nginx-volume:/usr/share/nginx/html nginx:latest                  # 方式2:直接挂载主机目录(更灵活,推荐)                  sudo mkdir -p /root/nginx/html# 主机创建目录                  sudo docker run -d -p 80:80 --name my-nginx -v /root/nginx/html:/usr/share/nginx/html nginx:latest                  # 说明:挂载后,修改主机/root/nginx/html目录下的文件,容器内对应目录会同步变化,容器删除后,主机目录数据仍保留

3. 配置Docker免sudo操作(提升使用便捷性)

默认情况下,执行docker命令需加sudo,配置免sudo操作,无需输入密码即可执行:

bash                  # 1. 将当前用户加入docker用户组                  sudo usermod -aG docker $USER                  # 2. 重启Docker服务                  sudo systemctl restart docker                  # 3. 注销当前用户,重新登录(或重启系统),配置生效                  # 验证:重新登录后,执行docker ps,无需sudo即可正常显示

注意:该操作仅针对当前用户,若有其他用户需要免sudo,需重复上述步骤。

4. 容器自启动配置(避免重启系统后容器失效)

Linux系统重启后,Docker容器默认不会自动启动,配置自启动,可减少手动操作:

bash                  # 1. 启动容器时,直接配置自启动(--restart=always)                  docker run -d -p 80:80 --name my-nginx --restart=always nginx:latest                  # 2. 给已存在的容器配置自启动                  docker update --restart=always 容器ID/容器名# 示例:docker update --restart=always my-nginx                  # 3. 取消容器自启动                  docker update --restart=no 容器ID/容器名

5. 批量管理容器(高效运维必备)

当有多个容器时,批量操作可大幅提升效率,常用批量命令:

bash                  # 1. 批量停止所有正在运行的容器                  docker stop $(docker ps -q)                  # 2. 批量删除所有已停止的容器                  docker rm $(docker ps -a -q)                  # 3. 批量删除所有镜像(谨慎使用,会删除所有本地镜像)                  docker rmi $(docker images -q)                  # 4. 批量查看所有容器的状态                  docker ps -a --format "table {{.ID}}\t{{.Names}}\t{{.Status}}\t{{.Ports}}"

四、常见问题与排查技巧(实战避坑,快速解决)

使用Docker过程中,难免遇到报错,以下是最常见的问题及排查方法,新手可直接对照解决。

1. 问题1:Docker启动失败,提示“Job for docker.service failed”

排查方法:

1查看Docker启动日志,定位错误原因:sudo journalctl -u docker

1常见原因1:daemon.json配置错误(如语法错误),重新修改配置文件,确保JSON格式正确;

1常见原因2:端口被占用,关闭占用端口的服务,或更换容器端口。

2. 问题2:拉取镜像时,提示“timeout”(超时)

排查方法:

1检查网络连接,确保Linux系统能正常访问外网;

1配置国内镜像源(参考进阶技能1),重新拉取镜像;

1若仍超时,手动下载镜像压缩包,导入本地:docker load -i 镜像压缩包路径。

3. 问题3:进入容器后,无法使用vim、ping等命令

排查方法:容器内部默认未安装这些工具,需在容器内安装:

bash                  # 进入容器后,执行以下命令安装(Ubuntu容器)                  apt update && apt install -y vim iputils-ping                  # CentOS容器                  yum install -y vim iputils-ping

4. 问题4:容器挂载数据卷后,主机目录无法访问(权限不足)

排查方法:给主机目录赋予足够权限,示例:

bash                  sudo chmod -R 777 /root/nginx/html# 给主机挂载目录赋予读写执行权限                  # 或修改目录所有者,与容器内用户一致(更安全)                  sudo chown -R 101:101 /root/nginx/html# nginx容器内默认用户ID为101

五、实用场景实战(将技能落地,快速上手)

结合实际工作场景,分享2个高频实战案例,帮助新手快速将Docker技能落地。

实战1:用Docker快速部署Nginx服务

bash                  # 1. 拉取nginx最新镜像                  docker pull nginx:latest                  # 2. 创建主机挂载目录(用于存放nginx配置和网页文件)                  mkdir -p /root/nginx/{conf,html,logs}                  # 3. 复制容器内默认配置到主机(便于修改)                  docker run -d --name temp-nginx nginx:latest# 临时启动容器                  docker cp temp-nginx:/etc/nginx/nginx.conf /root/nginx/conf/# 复制配置文件                  docker rm -f temp-nginx# 删除临时容器                  # 4. 挂载目录启动nginx,配置自启动                  docker run -d -p 80:80 --name my-nginx --restart=always \                  -v /root/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \                  -v /root/nginx/html:/usr/share/nginx/html \                  -v /root/nginx/logs:/var/log/nginx \                  nginx:latest                  # 5. 验证:浏览器访问Linux主机IP(如http://192.168.1.100),能看到nginx默认页面即成功

实战2:用Docker部署MySQL服务(持久化数据)

bash                  # 1. 拉取MySQL 8.0镜像                  docker pull mysql:8.0                  # 2. 创建数据卷(持久化MySQL数据)                  docker volume create mysql-data                  # 3. 启动MySQL容器,设置密码,配置自启动                  docker run -d -p 3306:3306 --name my-mysql --restart=always \                  -v mysql-data:/var/lib/mysql \                  -e MYSQL_ROOT_PASSWORD=123456 \# 设置root密码为123456                  mysql:8.0                  # 4. 验证:进入容器,登录MySQL                  docker exec -it my-mysql /bin/bash                  mysql -u root -p# 输入密码123456,能成功登录即部署成功

六、总结

Linux系统中Docker的使用,核心是掌握“镜像管理+容器操作”,再结合进阶技能(国内镜像、数据卷、免sudo、自启动),就能满足日常开发、运维的绝大多数需求。Docker的核心价值在于“隔离、高效、可移植”,它能让开发者摆脱环境配置的困扰,让运维人员实现快速部署、批量管理,大幅提升工作效率。

新手建议从基础操作入手,先熟练掌握镜像拉取、容器启停、端口映射等核心命令,再逐步尝试数据卷挂载、自启动配置等进阶技能,结合实战场景多练习,就能快速上手。后续可深入学习Docker Compose(批量管理多容器)、Docker Swarm(容器集群)等高级特性,进一步提升Docker使用能力,适配更复杂的业务场景。

|(注:文档部分内容可能由 AI 生成)

最新文章

随机文章