docker 相关教程(-) (安装 redis )

本文介绍如何在Redis配置文件中设置守护进程模式,并注释特定行以启用远程访问和AOF持久化,确保容器运行正常。通过修改bind选项,实现从仅限本地访问到允许远程连接的转变。

**#redis开启守护进程,需要注释掉,不然容器无法跑起来**

#daemonize yes

dir /data

logfile /data/redis.log

protected-mode no

#注释掉,可以远程访问

#bind 127.0.0.1

#开启AOF

appendonly yes

 

docker run -itd -p 6379:6379 -v /usr/local/docker-all-folder/redis/redis.conf:/usr/local/etc/redis/redis.conf -v /usr/local/docker-all-folder/redis/data/:/data --name 

myredis -e "TZ=Asia/Shanghai" redis redis-server /usr/local/etc/redis/redis.conf

<think> 我们遇到了命令 `sudo docker run --name redis -d -p 6379:6379 rdsource.tp-link.com/8088:redis:latest` 在执行时出现错误:`docker: invalid reference format.`。 这个错误通常是由于镜像名称的格式不正确引起的。Docker镜像名称的格式要求如下: 1. 标准格式为:`[registry[:port]/]repository[:tag]` 或 `[registry[:port]/]repository[@digest]` 2. 其中,repository部分可以包含多个由斜杠(`/`)分隔的路径组件,但每个组件必须由小写字母、数字、点(`.`)、连字符(`-`)或下划线(`_`)组成。 3. 标签(tag)部分只能包含字母、数字、下划线、点或连字符,且不能以点或连字符开头或结尾。 观察用户提供的镜像名称:`rdsource.tp-link.com/8088:redis:latest` 这个名称看起来包含了多个部分,但是它的结构不符合Docker镜像名称的规范。具体问题可能出现在: - 在`rdsource.tp-link.com/8088:redis:latest`中,有两个冒号(`:`),第一个冒号用于端口分隔(但在镜像名称中,端口应该用数字表示,且前面是域名,后面是端口),第二个冒号用于分隔镜像名和标签。 - 但是,按照标准,在域名后的端口(8088)后应该直接跟的是镜像仓库的路径(repository),然后再用冒号分隔标签(tag)。然而,这里的结构是`8088:redis:latest`,这显然不符合规范。 正确的格式应该是:`rdsource.tp-link.com:8088/redis:latest` 或者 `rdsource.tp-link.com:8088/redis:latest`(注意端口和路径之间的分隔符是斜杠,而不是冒号)。 因此,我怀疑用户原本想使用的镜像名称是:`rdsource.tp-link.com:8088/redis:latest`,即: - 注册表(registry):`rdsource.tp-link.com:8088` - 镜像仓库(repository):`redis` - 标签(tag):`latest` 所以,命令应该修改为: `sudo docker run --name redis -d -p 6379:6379 rdsource.tp-link.com:8088/redis:latest` 解释: - `rdsource.tp-link.com:8088`:这是私有仓库的地址和端口,注意端口与主机之间用冒号分隔,而端口和后面的镜像路径之间用斜杠分隔。 - `redis`:镜像名称。 - `latest`:标签。 另外,需要确保: 1. 该私有仓库是存在的,并且当前主机可以访问(网络可达)。 2. 如果需要登录私有仓库,应先执行`docker login rdsource.tp-link.com:8088`。 因此,我们给用户的解决方案是修改镜像名称的格式。 另外,我们也可以检查一下用户提供的命令中是否有其他问题,比如参数的位置是否正确。Docker run命令的格式为: `docker run [OPTIONS] IMAGE [COMMAND] [ARG...]` 用户的命令结构: `sudo docker run --name redis -d -p 6379:6379 rdsource.tp-link.com/8088:redis:latest` 其中,选项(OPTIONS)已经正确(--name, -d, -p),然后紧接着应该是镜像名称,后面可以跟命令(COMMAND)和参数(ARG)。所以,问题只出现在镜像名称部分。 步骤总结: 1. 将镜像名称由 `rdsource.tp-link.com/8088:redis:latest` 改为 `rdsource.tp-link.com:8088/redis:latest` 2. 尝试重新运行命令。 如果修改后仍然出现问题,则需要考虑网络访问权限,以及该私有仓库是否需要认证。 下面给出修正后的命令: `sudo docker run --name redis -d -p 6379:6379 rdsource.tp-link.com:8088/redis:latest` 如果用户还没有登录私有仓库,则应该先登录: `sudo docker login rdsource.tp-link.com:8088` 然后输入用户名和密码。 注意:如果私有仓库使用的是HTTP而不是HTTPS,可能需要在Docker守护进程中配置insecure-registries。具体配置方法可参考Docker官方文档。 综上所述,我们将修正命令并指导用户正确使用私有仓库镜像。 </think> 以下是解决 `docker: invalid reference format.` 错误的详细步骤和原因分析: ### 错误原因分析 问题出在镜像名称格式上:`rdsource.tp-link.com/8088:redis:latest` 该格式违反了 Docker 镜像命名的三层结构规则: ```bash [REGISTRY[:PORT]/]REPOSITORY[:TAG] ``` 您的格式 `domain/port:name:tag` 存在两个冒号分隔符,导致 Docker 解析失败[^1]。 ### 解决方法(分步操作) #### 1. 修正镜像名称格式 ```bash # 正确格式:域名:端口/仓库名:标签 sudo docker run --name redis -d -p 6379:6379 \ rdsource.tp-link.com:8088/redis:latest ``` #### 2. 验证镜像是否存在(可选) ```bash docker pull rdsource.tp-link.com:8088/redis:latest # 成功应显示:Status: Downloaded newer image... ``` #### 3. 检查私有仓库访问权限 若镜像在私有仓库,需先登录: ```bash docker login rdsource.tp-link.com:8088 # 输入用户名密码后重试 ``` #### 4. 调试模式运行(若仍失败) ```bash docker run --rm -it rdsource.tp-link.com:8088/redis:latest sh # 观察终端错误提示 ``` ### 关键说明 | 错误格式 | 正确格式 | 区别点 | |---------|---------|-------| | `domain/port:name:tag` | `domain:port/name:tag` | 端口后必须用`/`而非`:`分隔 | | `rdsource.tp-link.com/8088:redis:latest` | `rdsource.tp-link.com:8088/redis:latest` | 端口位置修正 | ### 可能延伸问题 1. **端口8088不可达**:检查防火墙设置 ```bash telnet rdsource.tp-link.com 8088 # 测试端口连通性 ``` 2. **TLS证书问题**:若仓库使用HTTPS ```bash docker --tlsverify pull ... ``` ### 操作示例流程 ```mermaid graph TB A[启动命令] --> B{格式校验} B -->|错误| C[修正名称] B -->|正确| D[执行启动] C --> E[domain:port/name:tag] E --> D D --> F{结果} F -->|成功| G[容器运行] F -->|失败| H[检查网络/权限] ``` 执行修正后的命令: ```bash sudo docker run --name redis -d -p 6379:6379 \ rdsource.tp-link.com:8088/redis:latest ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值