2025最新docker教程(二)

1、 环境准备

#系统环境:docker最低支持centos7且在64位平台上,内核版本在3.10以上
#版本:Docker Community Edition(CE)社区版,Enterprise Edition(EE) 企业版(包含了一些收费服务)

2、安装步骤

step1:使用yum命令进行安装

老版本安装方式 $ yum install -y docker 安装的版本是1.13.1(2017-2-8更新),不推荐

新版本安装:Docker官方文档: https://docs.docker.com/engine/install/centos/ 步骤摘要:

#1.卸载旧版本
$ yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
#2.安装yum工具包包(-y 表示不询问 使用默认配置进行安装,等待提示安装完毕!)
$ yum install -y yum-utils
#3.设置镜像的仓库(默认是从国外的,推荐使用国内的)
$ yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#更新yum软件包索引(可省略)
#yum makecache fast
#4.安装docker相关的 docker-ce 社区版 而ee是企业版
$ yum install -y docker-ce docker-ce-cli containerd.io

step2:查看是否安装成功

yum list installed|grep docker

备注:命令为 查看yum安装完成文件列表 并 筛选docker安装信息 如下

step3:启动docker服务

service docker start

step4:查看是否启动成功

service docker status

如果没有出现 active(running)说明启动失败

解决方法:修改docker文件,具体命令:vi /etc/sysconfig/docker,在--selinux-enabled后面添加=false。如下图所示:

#再次执行
service docker start
service docker status

Step5:查看docker版本

docker version

Step6:测试

docker run hello-world

3、配置镜像加速

方式一:阿里云镜像加速

A. 打开阿里云网址 https://cr.console.aliyun.com

B. 使用支付宝或淘宝账号登录

C. 搜索容器镜像服务

D. 复制红色区域内容

E. 新建文件夹 mkdir -p /etc/docker

F. 编辑文件 vim /etc/docker/daemon.json 把刚刚复制的内容写进去保存

G. 重启docker

systemctl daemon-reload
systemctl restart docker

方式二:腾讯云镜像加速

腾讯云为您提供如下 DockerHub 加速器,以方便您快速拉取 DockerHub 平台上的容器镜像。 此加速器地址需在腾讯云云服务器中配置才可生效,请勿通过浏览器直接访问,请参照以下教程进行配置。

# 1.创建或修改 /etc/docker/daemon.json 文件,并写入以下内容:
{
   "registry-mirrors": [
       "https://mirror.ccs.tencentyun.com"
  ]
}
# 2.依次执行以下命令,重新启动 Docker 服务。
$ systemctl daemon-reload
$ systemctl restart docker
# Ubuntu16.04 请执行 systemctl restart dockerd 命令

腾讯云容器服务官方地址: 容器镜像服务简介_容器镜像服务购买指南_容器镜像服务操作指南-腾讯云

方式三:推荐

1.创建或修改 /etc/docker/daemon.json 文件,并写入以下内容:
{
"registry-mirrors": [
    "https://docker.m.daocloud.io",
    "https://dockerproxy.com",
    "https://docker.mirrors.ustc.edu.cn",
    "https://docker.nju.edu.cn",
    "https://docker.1panel.live"
    ]
}
2.依次执行以下命令,重新启动 Docker 服务。
systemctl daemon-reload
systemctl restart docker

备用:

{
    "registry-mirrors": [
        "https://hub.uuuadc.top",
        "https://docker.anyhub.us.kg",
        "https://dockerhub.jobcher.com",
        "https://dockerhub.icu",
        "https://docker.ckyl.me",
        "https://docker.awsl9527.cn"
    ]
}

如果以上仍然不能用,可尝试

{
    "registry-mirrors": [
        "https://mirror.baidubce.com",
        "https://docker.mirrors.sjtug.sjtu.edu.cn"
    ]
}

4.开机启动

  1. 创建systemd服务文件(如果是yum 安装,这一步可省略)

创建文件/etc/systemd/system/docker.service,写入以下内容:

[Unit]
Description=Docker Service
After=network.target

[Service]
Type=simple
ExecStart=/usr/bin/dockerd
Restart=on-failure

[Install]
WantedBy=multi-user.target

该文件的具体含义如下:

  • [Unit]部分定义了服务的一些基本信息,Description字段用于描述本服务,After字段表示在network.target启动后启动该服务。

  • [Service]部分定义了开机启动docker服务的方式,Type字段指定服务类型,此处使用simple;ExecStart字段指定服务启动命令,该命令为dockerd;Restart字段指定当服务发生故障时进行重启。

  • [Install]部分指定服务的安装方式,此处为在multi-user.target下安装。

创建好服务文件后,使用systemctl重载配置文件,使之生效:

systemctl daemon-reload
  1. 设置docker服务开机启动

设置docker服务开机启动,运行以下命令:

systemctl enable docker.service

该命令会在系统启动时开启docker.service服务。

  1. 验证docker服务是否成功开机启动

运行以下命令,查看docker.service服务是否开机启动:

systemctl is-enabled docker.service

如果该命令返回“enabled”,则表示docker.service服务已成功开机启动。

<think>嗯,用户遇到了一个错误信息:“ts=2025-03-05T07:58:34.023Z caller=node_exporter.go:211 level=error err="listen tcp :9100: bind: address already in use"”。首先,我需要理解这个错误的原因。看起来是node_exporter在启动时试图监听9100端口,但该端口已经被占用了。接下来,我应该思考如何帮助用户解决这个问题。 首先,我需要确认用户是否了解这个错误的基本含义。错误信息已经很明确,指出端口9100被占用。用户可能需要指导如何找出哪个进程占用了该端口,然后终止该进程或者重新配置node_exporter使用其他端口。 接下来,可能的解决步骤包括检查端口占用情况,终止占用进程,或者更改node_exporter的监听端口。此外,用户可能需要了解如何防止这种情况再次发生,比如设置自动重启或调整服务配置。 用户可能是在尝试启动node_exporter时遇到了这个问题,尤其是在监控系统中常见的操作。他们可能已经按照某个教程或文档操作,但遇到了阻碍。因此,除了解决当前问题,用户可能还需要一些最佳实践的建议,比如使用systemd服务管理,或者如何正确配置端口。 另外,考虑到用户可能对Linux命令不太熟悉,需要提供详细的命令示例和解释。例如,使用netstat或ss命令查看端口占用,使用kill命令终止进程,或者修改node_exporter的启动参数。 还需要注意,用户可能不知道如何安全地终止进程,或者担心终止错误进程会影响系统稳定性。因此,在提供终止进程的命令时,需要强调确认进程ID的重要性,并建议使用SIGTERM而不是强制终止。 最后,用户可能需要了解如何更改node_exporter的监听端口,这涉及到启动参数的修改。可能需要指导用户编辑systemd服务文件,添加--web.listen-address参数,并重新加载服务配置。 总结来说,回答需要分步骤,清晰易懂,涵盖问题诊断、解决方法以及预防措施,同时提供具体命令和解释,确保用户能够安全有效地解决问题。</think>以下是解决端口 9100 被占用问题的完整方案: --- ### **错误原因分析** `node_exporter` 默认监听 9100 端口,报错表示该端口已被其他进程占用,常见于: - 重复启动多个 `node_exporter` - Prometheus 相关组件冲突 - 其他服务(如 Docker 容器)占用该端口 --- ### **解决方案** #### **第一步:确认端口占用情况** ```bash sudo lsof -i :9100 # 或 sudo ss -tulnp | grep ':9100' ``` 输出示例: ```bash COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME node_ex 12345 root 3u IPv6 123456 0t0 TCP *:9100 (LISTEN) ``` #### **第步:处理占用进程** **方案 1:停止无关进程** ```bash sudo kill -15 PID # 优雅终止进程(将 PID 替换为实际进程号) sudo kill -9 PID # 强制终止(慎用) ``` **方案 2:更换 node_exporter 端口**(推荐) ```bash # 启动时指定新端口 ./node_exporter --web.listen-address=":9200" # 若使用 systemd 服务 sudo systemctl edit node_exporter # 添加以下内容 ``` ```ini [Service] ExecStart=/usr/local/bin/node_exporter --web.listen-address=:9200 ``` ```bash sudo systemctl daemon-reload sudo systemctl restart node_exporter ``` #### **第三步:验证结果** ```bash curl http://localhost:9100/metrics # 原端口(应失败) curl http://localhost:9200/metrics # 新端口(应成功) ``` --- ### **常见问题处理** 1. **僵尸进程残留** 重启系统可强制释放被占用的端口: ```bash sudo reboot ``` 2. **Docker 容器冲突** 检查并停止相关容器: ```bash docker ps | grep 9100 docker stop container_name ``` 3. **防火墙拦截** 若需外部访问,开放新端口: ```bash sudo ufw allow 9200/tcp ``` --- ### **预防措施** | 方法 | 操作说明 | |-------------------------------|--------------------------------------------------------------------------| | **检查服务状态** | `systemctl status node_exporter` | | **使用专用用户** | 创建 `node_exporter` 用户运行服务,避免权限冲突 | | **配置监控告警** | 在 Prometheus 中设置端口存活检测 | | **标准化部署** | 使用 Ansible 或 Docker 部署时固定端口配置 | --- ### **端口分配建议** 建议为常用监控工具预留端口范围: ``` 9100-9103:node_exporter 及其变种(如 mysqld_exporter) 9090:Prometheus 服务端口 9093:Alertmanager 端口 3000:Grafana 端口 ``` 通过以上步骤,您既可解决当前端口冲突问题,又能建立规范的端口管理机制。如果问题仍存在,建议检查系统日志: ```bash journalctl -u node_exporter --since "2025-03-05 07:50:00" ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嘿rasa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值