从零开始配置环境--采用docker配置环境
在使用docker配置环境中会出现一系列问题:
最不好解决的是在拉取远程镜像下载时出现的问题:
# 将我提供的远程镜像拉取到本地
docker pull huanheart/httpserver:v1
如果在这个过程中出现 Error response from daemon: Get "https://registry-1.docker.io/v2/'":context deadline exceeded 等类似问题,
那么可能是因为没有设置代理导致的(因为目前国内的docker不可以使用了,必须挂梯子下载或者采用国内的镜像源)
可以设置国内镜像源代理或者说用梯子开启局域网服务,并在虚拟机上进行绑定。
1.设置国内镜像源代理
这个比较简单,配置可以用的Docker镜像加速器就可以了:
打开配置文件:
cpp
sudo nano /etc/docker/daemon.json
配置镜像加速器:
{
"registry-mirrors":[
"https://docker.m.daocloud.io",
"https://docker.1ms.run",
"https://docker.m.ixdev.cn"
]
}
这个是我这里用的镜像加速器,仅供参考。不能用去网上找可以用的。
2.用梯子开开启局域网服务,并配置虚拟机接口
(1)推荐的方法:修改 daemon.json 配置文件
首先,找到你的 daemon.json 配置文件,比较坑的是,不同的 docker 安装方式这个文件的位置不同。
- linux(默认情况):
/etc/docker/daemon.json - macos(默认情况):
~/docker/daemon.json - 使用 orbstack 客户端: 你可以在软件 setting 中找到这个配置
- 使用 docker desktop 客户端:你可以在软件 Preference Daemon 中找到这个配置。可以参考:Change settings | Docker Docs
- 使用 rancher desktop 客户端:这个最复杂,你需要先进入到 VM 内部,然后修改。可以参考:modify docker daemon configuration in Rancher Desktop VM · rancher-sandbox/rancher-desktop · Discussion #1477。这个实在是太复杂了,建议换 docker desktop 或者 orbstack 吧......
然后,添加以下内容,把你自己本地的代理地址写进去:
{
"proxies" : {
"http-proxy" : "http://127.0.0.1:7890",
"no-proxy" : "localhost,127.0.0.0/8",
"https-proxy" : "http://127.0.0.1:7890"
}
}
然后重启一下 docker 服务,使其生效。若要检查生效情况,可以执行:
$ docker info
...
HTTP Proxy: http://127.0.0.1:7890
HTTPS Proxy: http://127.0.0.1:7890
No Proxy: localhost,127.0.0.1
...
如果出现以上几行的话,说明代理配置成功,这时候可以尝试 docker pull 看看是否正常。
(2)适用于 Linux 部署,修改 systemd 自启动配置
一般情况下,用上面的方法就可以了。不过官方文档里,另外还提出了一种方案,适合 linux 环境下直接在 systemd 中配置代理。简单介绍一下。
新增 systemd 配置文件/etc/systemd/sysytem/docker.service.d/http_proxy.conf,
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo nano /etc/systemd/system/docker.service.d/http-proxy.conf
加入以下内容:地址和端口去网上搜怎么整
[Service]
Environment="HTTP_PROXY=http://127.0.0.1:7890"
Environment="HTTPS_PROXY=https://127.0.0.1:7890"
Environment="NO_PROXY=localhost,127.0.0.1"
然后:
-
重新加载systemd配置:
sudo systemctl daemon-reload
-
重启docker服务:
sudo systemctl restart docker
-
检查代理是否生效:
sudo systemctl show docker --property Environment
更详细的介绍,请见Daemon proxy configuration | Docker Docs。