网站首页 > 教程文章 正文
docker的国内镜像可用性经常让人走很多弯路。这里将限定特定的环境,将基本操作步骤和遇到的问题逐一呈现,减少后来者曲折。
环境
可以上网的工作电脑,操作系统为ubuntu 24.04版本,网卡接入本地局域网路由器,可连接internet,配置如下:
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 24.04.2 LTS
Release: 24.04
Codename: noble
$ ifconfig
eno1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.2.111 netmask 255.255.255.0 broadcast 192.168.2.255
inet6 240e:3b3:30c4:ff41:ca1f:66ff:fee1:26d3 prefixlen 64 scopeid 0x0<global>
inet6 fe80::ca1f:66ff:fee1:26d3 prefixlen 64 scopeid 0x20<link>
inet6 240e:3b3:30c4:ff41::1000 prefixlen 128 scopeid 0x0<global>
ether c8:1f:66:e1:26:d3 txqueuelen 1000 (Ethernet)
RX packets 2678113 bytes 1137360495 (1.1 GB)
RX errors 0 dropped 69 overruns 0 frame 0
TX packets 2482295 bytes 254375099 (254.3 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 43
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 414022 bytes 63168907 (63.1 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 414022 bytes 63168907 (63.1 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
$ ping -4 www.qq.com
PING www.qq.com (121.14.77.201) 56(84) bytes of data.
64 bytes from 121.14.77.201: icmp_seq=1 ttl=53 time=4.29 ms
64 bytes from 121.14.77.201: icmp_seq=2 ttl=53 time=4.27 ms
操作步骤
- 卸载旧版本docker,安装最新版本docker。
# 1. 卸载旧版本
sudo apt-get remove docker docker-engine docker.io containerd runc
# 2. 安装依赖
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg lsb-release
# 3. 添加 Docker 官方 GPG 密钥
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# 4. 设置仓库
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 5. 安装 Docker 引擎
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
# 6. 验证安装
sudo docker run hello-world
上述代码框,1-5都顺利执行,到6就卡住了。
$ sudo docker run helloworld
[sudo] password for gauss:
Unable to find image 'helloworld:latest' locally
docker: Error response from daemon: Get "https://registry-1.docker.io/v2/": context deadline exceeded
Run 'docker run --help' for more information
原因也很简单,就是镜像源站不可访问。
$ ping registry-1.docker.io
PING registry-1.docker.io (2a03:2880:f11b:83:face:b00c:0:25de) 56 data bytes
^C
--- registry-1.docker.io ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2036ms
gauss@power-edge-r730:~$ ping -4 registry-1.docker.io
PING registry-1.docker.io (128.242.245.212) 56(84) bytes of data.
# ping 不通
然后参考一系列往上搜索和LLM获得的答案,只有这些,建议你使用国内镜像源。
$ cat /etc/docker/daemon.json
{
"registry-mirrors": [
"https://cr.console.aliyun.com",
"https://mirrors.huaweicloud.com",
"https://docker.m.daocloud.io"
],
"bip":"192.168.20.1/24"
}
$ sudo systemctl daemon-reload
$sudo systemctl restart docker
但是没啥用。还是如此,即时看docker的日志,也弄不明白,你只以为配置没有生效。不断尝试后,只好通过命令检查这些源站是否真能用。
这些站点还真不能用curl
https://cr.console.aliyun.com/v2 . 但是万能的搜索、豆包、deepseek都还在推荐这些源站。不知道我这里是否个案。环境特殊,取法翻墙,废了好些功夫,才找到一个可用的。列在云服务器控制台里面。
但是如果你一定要通过helloworld来检查,还是失败的。这里可以下载redis,nginx,mysql等。
所以最后一步就换做拉取wordpress镜像吧。
# 6. 验证安装
$ sudo docker pull wordpress
Using default tag: latest
latest: Pulling from library/wordpress
5040bd298390: Pull complete
568dce68541a: Pull complete
......
cd04b95ebe9c: Pull complete
Digest: sha256:b900bc9ceff22ef1dee076c25a67b6d661f9f108b4347a5646e05a11fef9b866
Status: Downloaded newer image for wordpress:latest
docker.io/library/wordpress:latest
- 装好docker后,赋予docker权限,避免每次都sudo
# 将当前用户加入 docker 组
sudo usermod -aG docker $USER
# 退出当前会话重新登录(或重启)
newgrp docker # 立即生效(或直接重启终端)
- 安装并启动nginx
这里使用docker-composer安装nginx并管理容器。首先创建nginx运行需要的配置文件、页面以及日志文件等,然后编辑yaml文件,通过docker-compose启动
gauss@power-edge-r730:~/soft/nginx$ tree
.
├── data
│ ├── conf
│ │ ├── default.conf
│ │ └── enger.aigrow.space.conf
│ ├── htdocs
│ │ └── index.html
│ └── log
│ ├── access.log
│ └── error.log
└── nginx.yaml
5 directories, 6 files
gauss@power-edge-r730:~/soft/nginx$ cat nginx.yaml
services:
nginx:
image: nginx:latest
volumes:
- "./data/log:/var/log/nginx"
- "./data/conf:/etc/nginx/conf.d"
- "./data/htdocs:/usr/share/nginx/html"
restart: always
ports:
- "80:80"
- "443:443"
gauss@power-edge-r730:~/soft/nginx$ docker-compose -f nginx.yaml up &
[1] 982942
[+] Running 2/2e-r730:~/soft/nginx$
Network nginx_default Created 0.1s
Container nginx-nginx-1 Created
- 测试
gauss@power-edge-r730:~/soft/nginx$ curl 127.0.0.1
Hello, Nginx!gauss@power-edge-r730:~/soft/nginx$ curl enger.aigrow.space
this is a test page.
gauss@power-edge-r730:~/soft/nginx$
总结
国内找一个可靠的源站很重要,很多错误都在这里,一些错误信息并不明确。可考虑使用curl源站确认是否ok。
猜你喜欢
- 2025-06-28 CentOS7下部署开源网络监控系统LibreNMS
- 2025-06-28 多商户短信二次开发(多商户短信二次开发怎么操作)
- 2025-06-28 AI Agent:构建以数据为中心的智能体
- 2025-06-28 阿里50亿参数AI画画模型火了!图像拆分再自由重组,创造力飞升
- 2025-06-28 Hyperf 下使用阿里云日志 SLS(阿里云srv记录如何配置)
- 2025-06-28 基于ThinkPHP6和Element2的极简后台管理系统
- 2025-06-28 ThinkPHP6初步搭建API服务(thinkphp 建站)
- 2025-06-28 php开发者composer使用看这一篇就够了
- 2025-06-28 Composer 安装与使用(composer怎么安装)
- 最近发表
-
- Nacos最全详解(8大架构原理图解)(nacos原理讲解)
- 干货!微服务全量升级JDK17,踩坑笔记整理
- springboot集成nacos配置中心(springcloud配置nacos集群)
- Nacos快速入门指南(nacos 使用)
- Nacos读取配置文件的顺序(nacos 配置文件)
- 本地启动若依项目nacos报错:Server check fail, please check server
- 阿里Nacos惊爆安全漏洞,火速升级!(附修复建议)
- Nacos简介—1.Nacos使用简介(nacos是干啥的)
- Nacos简介—4.Nacos架构和原理一(nacos原理讲解)
- Nacos架构最全详解(图文全面总结)
- 标签列表
-
- location.href (44)
- document.ready (36)
- git checkout -b (34)
- 跃点数 (35)
- 阿里云镜像地址 (33)
- qt qmessagebox (36)
- mybatis plus page (35)
- vue @scroll (38)
- 堆栈区别 (33)
- 什么是容器 (33)
- sha1 md5 (33)
- navicat导出数据 (34)
- 阿里云acp考试 (33)
- 阿里云 nacos (34)
- redhat官网下载镜像 (36)
- srs服务器 (33)
- pico开发者 (33)
- https的端口号 (34)
- vscode更改主题 (35)
- 阿里云资源池 (34)
- os.path.join (33)
- redis aof rdb 区别 (33)
- 302跳转 (33)
- http method (35)
- js array splice (33)