Docker 服务名总结笔记(超清晰版)

一、Docker 里到底有哪些"名字"?

Docker 里有 3 种名字,很多人会混淆:

名称 示例 出现位置 用途 是否影响 MySQL 主从
容器名(container_name) mysql-container docker run / compose 给人看的名字,用于 docker 命令 ❌ 不影响
服务名(service name) mysql docker-compose.yml Docker 内部 DNS 主机名 ✔ 仅在 compose 内部网络有效
主机名(hostname) 默认=容器名 容器内部 Linux 主机名 ❌ 一般不用
IP 地址 192.168.10.143 宿主机 / 局域网 跨容器、跨服务器通信 ✔ 经常用

二、什么是 Docker 服务名?

只有 docker-compose.yml 才有服务名。

例如:

yaml

复制代码
services:
  mysql:
  redis:
  backend:

这里的:

  • mysql

  • redis

  • backend

就是 服务名(service name)

✔ 服务名的作用

在 Docker Compose 内部网络中:

复制代码
backend → mysql

就像访问一个域名一样。

✔ 服务名 = Docker 内部 DNS 主机名

Compose 会自动创建一个内部网络:

复制代码
mysql → 172.18.0.2
redis → 172.18.0.3
backend → 172.18.0.4

所以 Django (web)可以这样访问 MySQL:

复制代码
HOST = "mysql"

三、docker run 没有服务名

你这条命令:

复制代码
docker run --name mysql-container ...

这里的:

复制代码
--name mysql-container

容器名,不是服务名。

docker run 不会创建 service name。

四、你为什么感觉"我部署项目时没用到服务名"?

因为你部署主从复制时:

  • 主库是一个容器

  • 从库是另一个容器

  • 它们之间通过 宿主机 IP 通信

你的主从复制命令是:

复制代码
MASTER_HOST='192.168.10.143'

所以你根本不会用到:

  • mysql

  • mysql-master

  • mysql-slave

这些 service 名。

你用的是 IP,不是 Docker 内部网络。

五、TLS 证书到底应该匹配什么?

最关键的一句话:

🔥 TLS 证书必须匹配你在 CHANGE MASTER TO 里写的 MASTER_HOST。

你写的是:

复制代码
MASTER_HOST='192.168.10.143'

所以证书必须:

复制代码
mkcert 192.168.10.143

和 service 名完全无关。

六、什么时候才需要用服务名?

只有一种情况:

✔ 主库和从库都在同一个 docker-compose.yml 里

例如:

yaml

复制代码
services:
  mysql-master:
  mysql-slave:

主从复制写法:

复制代码
MASTER_HOST='mysql-master'

证书必须:

复制代码
mkcert mysql-master

但现在不是这种架构。

七、最终总结(最重要)

我给你一句最关键的总结:

docker-compose 才有服务名;docker run 没有服务名。 主从复制使用什么 Host,就必须用这个 Host 来生成 TLS 证书。 你现在用的是 IP,所以证书必须用 IP。

相关推荐
小p1 天前
docker学习7:docker 容器的通信方式
docker
小p1 天前
docker学习5:提升Dockerfile水平的5个技巧
docker
小p1 天前
docker学习3:docker是怎么实现的?
docker
小p3 天前
docker学习: 2. 构建镜像Dockerfile
docker
小p3 天前
docker学习: 1. docker基本使用
docker
崔小汤呀4 天前
Docker部署Nacos
docker·容器
缓解AI焦虑4 天前
Docker + K8s 部署大模型推理服务:资源划分与多实例调度
docker·容器
1candobetter4 天前
Docker Compose Build 与 Up 的区别:什么时候必须重建镜像
docker·容器·eureka
西岸行者4 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
シ風箏4 天前
MySQL【部署 04】Docker部署 MySQL8.0.32 版本(网盘镜像及启动命令分享)
数据库·mysql·docker