Linux 将daemon.json文件的内容更改为{ "insecure-registries": ["localhost:5000"] }
时间: 2023-07-19 11:05:17 浏览: 210
要将daemon.json文件的内容更改为{ "insecure-registries": ["localhost:5000"] },请按照以下步骤操作:
1. 打开终端并以root用户身份登录。
2. 进入/etc/docker/目录。
3. 查看是否有daemon.json文件,如果没有,请使用以下命令创建:
```
touch daemon.json
```
4. 使用vim编辑器打开daemon.json文件。
```
vim daemon.json
```
5. 将以下代码粘贴到文件中:
```
{
"insecure-registries": ["localhost:5000"]
}
```
6. 保存并关闭文件。
7. 重启docker服务。
```
service docker restart
```
现在,你已经成功将daemon.json文件的内容更改为{ "insecure-registries": ["localhost:5000"] }。这将允许你在本地使用不安全的Docker仓库。
相关问题
harbor安装教程[sbx424@localhost ~]$ sudo docker login 172.24.4.132:80 -u admin -p Harbor12345 WARNING! Using --password via the CLI is insecure. Use --password-stdin. Error response from daemon: Get "https://172.24.4.132:80/v2/": dial tcp 172.24.4.132:80: connect: connection refused [sbx424@localhost ~]$ 怎么解决这个问题
### Harbor Docker Login Connection Refused 解决方案
当尝试通过 `docker login` 访问 Harbor 仓库时,可能会遇到 `connection refused` 错误。以下是可能的原因以及解决方案:
#### 可能原因分析
1. **端口未开放或防火墙阻止**
如果目标服务器上的指定端口(如 80 或 443)被防火墙阻塞或者未正确监听,则会出现连接拒绝的情况[^1]。
2. **Docker 客户端配置不完整**
默认情况下,Docker 不信任自签名证书或非 HTTPS 地址。因此,在访问私有镜像库(如 Harbor)时,需要显式配置 insecure-registries 参数来允许非加密通信[^3]。
3. **DNS 配置冲突**
当 Docker 使用特定 DNS 设置时,可能导致内部服务无法正常解析域名,从而引发连接问题。此情况通常发生在复杂网络环境中,需调整相关参数以支持正确的名称解析[^4]。
4. **Harbor 自身服务状态异常**
若 Harbor 的核心组件(例如 Core API、Redis 缓存等)未能正常运行,也可能导致外部客户端无法完成身份验证过程[^2]。
---
#### 具体解决方法
##### 方法一:修改 Docker Daemon 配置文件
编辑 `/etc/docker/daemon.json` 文件,添加以下内容:
```json
{
"registry-mirrors": [],
"insecure-registries": ["192.168.10.124:80"]
}
```
保存后重启 Docker 服务以应用更改:
```bash
sudo systemctl daemon-reload && sudo systemctl restart docker
```
> 注:上述操作允许 Docker 对于 IP 地址为 `192.168.10.124` 并使用端口号 `80` 的注册表执行无 TLS 加密的操作。
##### 方法二:更新 Systemd Service Unit File
对于某些 Linux 发行版,默认的 Docker 启动脚本路径位于 `/usr/lib/systemd/system/docker.service` 中。可以在此处追加额外选项启用对本地私有仓库的支持:
```ini
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --add-runtime=nvidia-container-runtime=/usr/bin/nvidia-container-runtime -H fd:// --containerd=/run/containerd/containerd.sock --insecure-registry=192.168.10.124:80
```
同样地,记得刷新守护进程缓存并重新加载服务实例:
```bash
sudo systemctl daemon-reload && sudo systemctl restart docker
```
##### 方法三:确认 Harbor 实例可用性
确保 Harbor 所依赖的服务均处于健康状态,尤其是 HTTP(S) 接入层代理程序 Nginx 和数据库 MySQL 是否能够响应请求。可以通过查看日志文件定位潜在故障点;比如检查 /var/log/nginx/error.log 或者查阅 harbor-core 日志记录是否存在类似 “failed to start server” 提示信息。
另外需要注意的是,如果启用了 SSL/TLS 功能,请务必上传合法有效的 X.509 数字凭证至对应目录,并同步告知所有关联方导入根 CA 至受信存储区以便建立双向握手关系。
##### 方法四:排查 DNS 解析障碍
假如发现即使解决了前面提到的安全性和权限方面的问题依旧存在连通性的困扰,那么很可能是由于不良设计引起的递归查询失败所致。针对这种情况建议按照官方文档指示修正 compose manifest ,即增加字段 `"dns_search : ."` 来强制限定搜索域范围仅限当前子网内的资源对象。
---
### 总结
综上所述,要彻底消除因 `Connection Refused` 而阻碍成功的登陆行为可以从以下几个角度切入处理:一是核查物理链路畅通状况排除硬件层面干扰因素;二是依据实际需求灵活运用策略规避不必要的安全隐患同时兼顾便利程度;三是密切跟踪后台运作细节快速捕捉蛛丝马迹进而采取针对性补救措施。
[root@localhost network-scripts]# docker info | grep “Registry Mirrors” Registry Mirrors: [root@localhost network-scripts]# docker info Client: Docker Engine - Community Version: 26.1.4 Context: default Debug Mode: false Plugins: buildx: Docker Buildx (Docker Inc.) Version: v0.14.1 Path: /usr/libexec/docker/cli-plugins/docker-buildx compose: Docker Compose (Docker Inc.) Version: v2.27.1 Path: /usr/libexec/docker/cli-plugins/docker-compose Server: Containers: 17 Running: 0 Paused: 0 Stopped: 17 Images: 10 Server Version: 26.1.4 Storage Driver: overlay2 Backing Filesystem: xfs Supports d_type: true Using metacopy: false Native Overlay Diff: true userxattr: false Logging Driver: json-file Cgroup Driver: cgroupfs Cgroup Version: 1 Plugins: Volume: local Network: bridge host ipvlan macvlan null overlay Log: awslogs fluentd gcplogs gelf journald json-file local splunk syslog Swarm: inactive Runtimes: io.containerd.runc.v2 runc Default Runtime: runc Init Binary: docker-init containerd version: d2d58213f83a351ca8f528a95fbd145f5654e957 runc version: v1.1.12-0-g51d5e94 init version: de40ad0 Security Options: seccomp Profile: builtin Kernel Version: 3.10.0-1160.119.1.el7.x86_64 Operating System: CentOS Linux 7 (Core) OSType: linux Architecture: x86_64 CPUs: 1 Total Memory: 1.776GiB Name: bogon ID: c7a19a64-e0b4-4218-b922-515384d2c66c Docker Root Dir: /var/lib/docker Debug Mode: false Experimental: false Insecure Registries: 192.168.23.128:5000 127.0.0.0/8 Registry Mirrors: https://mirror.ccs.tencentyun.com/ https://docker.m.daocloud.io/ https://registry.docker-cn.com/ https://docker.rainbond.cc/ Live Restore Enabled: false 这是什么情况,docker info | grep “Registry Mirrors”的Registry Mirrors为空,而docker info的Registry Mirrors却有信息
<think>嗯,用户遇到了一个问题,当使用`docker info | grep “Registry Mirrors”`时,Registry Mirrors显示为空,但直接运行`docker info`却能显示镜像仓库的信息。我需要帮他弄清楚为什么会这样。
首先,我应该检查用户的命令是否正确。注意到用户在执行`grep`时使用了双引号,而中英文引号可能有差异。用户粘贴的命令里用了中文双引号“”,而实际上在终端里应该用英文双引号""。这可能导致了grep命令没有正确匹配到Registry Mirrors行,从而输出为空。
接下来,用户提供的docker info输出显示确实配置了多个镜像源,比如腾讯云、DaoCloud等。所以问题应该出在命令的引号格式上。当用户使用中文引号时,shell无法识别,导致grep查找不到匹配项,结果为空。而直接运行docker info则正常显示所有信息,包括镜像仓库。
另外,可能还有其他原因,比如行首的空格或者制表符。在docker info的输出中,Registry Mirrors: 下面可能有多个以空格开头的镜像地址。这时候如果直接用`grep "Registry Mirrors"`只能匹配到标题行,而无法获取后续的镜像地址。用户可能误以为镜像地址应该出现在同一行,但实际上它们是缩进在下面的行里。
所以解决方案应该是:首先检查并修正引号的问题,使用英文引号。如果问题依旧,可能需要使用-A参数来显示匹配行之后的几行内容,或者使用正则表达式匹配带有缩进的镜像地址。例如,使用`grep -A 4 "Registry Mirrors"`来显示匹配行后的四行,或者`grep -E '^\s+http'`来直接查找以空格开头且包含http的行。
总结下来,用户的问题主要是因为使用了中文引号导致grep匹配失败,以及没有正确处理多行输出的情况。需要指导用户正确使用英文引号,并调整grep命令以捕获后续的镜像地址。</think>你遇到的问题是由于`grep`命令匹配规则与Docker输出格式的差异导致的。具体原因和解决方法如下分步说明:
---
### 一、现象分析
1. **直接执行`docker info`时**:
```
Registry Mirrors:
https://mirror.ccs.tencentyun.com/
https://docker.m.daocloud.io/
https://registry.docker-cn.com/
https://docker.rainbond.cc/
```
*输出包含镜像仓库配置*
2. **使用管道`docker info | grep "Registry Mirrors"`时**:
```
Registry Mirrors:
```
*仅显示标题行,镜像地址消失*
---
### 二、根本原因
1. **格式差异**:
- `Registry Mirrors:` 是**标题行**(直接匹配)
- 镜像地址以**缩进格式**(空格或制表符)在标题下方逐行显示
2. **`grep`默认行为**:
- 仅匹配**单行内容**
- 无法自动捕获**缩进的子行**
---
### 三、解决方法
#### 方法 1:匹配标题+镜像地址
通过正则表达式匹配**包含镜像地址的行**:
```bash
docker info | grep -E '^\s*(Registry Mirrors:|https?://)'
```
#### 方法 2:显示标题及后续行
使用`-A`参数捕获标题后的4行(根据实际镜像数量调整):
```bash
docker info | grep -A 4 "Registry Mirrors"
```
#### 方法 3:直接查看配置文件
Docker镜像仓库配置存储在`/etc/docker/daemon.json`中,可直接查看:
```bash
cat /etc/docker/daemon.json | grep -i "registry-mirrors"
```
---
### 四、验证结果
执行上述任一命令后,你将看到完整镜像配置:
```
Registry Mirrors:
https://mirror.ccs.tencentyun.com/
https://docker.m.daocloud.io/
https://registry.docker-cn.com/
https://docker.rainbond.cc/
```
---
### 五、扩展知识
Docker镜像加速配置示例(`daemon.json`):
```json
{
"registry-mirrors": [
"https://mirror.ccs.tencentyun.com",
"https://docker.m.daocloud.io"
]
}
```
修改后需重启Docker生效:
```bash
systemctl restart docker
```
阅读全文
相关推荐














