Docker踩坑记录

权限和网络原因导致无法制作镜像

一个很简单docker镜像配置:

image-20241103112713471

Dockerfile文件:

image-20241103112736426

index.js文件:

image-20241103112814616

尝试在该目录下运行命令 docker build -t hello-docker . ,报错:

image-20241103113102397

提示权限不足,那么我们加一个sudo试试: sudo docker build -t hello-docker .,报错:

image-20241103113208697

可以看到即使使用sudo也是会报错的,经过一番搜索,得知在macOS上,需要修改 ~/.docker/config.json :

image-20241103113544366

再次运行 sudo docker build -t hello-docker ,报错:

image-20241103113811092

这种一眼就看出是网络原因,现在我们有两种选择:1. 设置代理,2. 换源,我们依次尝试

设置代理

运行以下命令:

1
2
3
4
export HTTPS_PROXY=http://127.0.0.1:7897 
export HTTP_PROXY=http://127.0.0.1:7897
export ALL_PROXY=socks5://127.0.0.1:7897
sudo docker build -t hello-docker .

结果:

image-20241103114136278

可以看到这个代理设置了跟没设置一样(((

换源

我这里使用的源是:https://mirror.ccs.tencentyun.com,是腾讯的一个源

打开docker desktop控制台,进入设置,找到Docker Engine:

image-20241103114429598

加上上图中红色框中的内容,然后点击右下角的Apply & restart,重启完毕后,我们再试一次:

image-20241103114615035

又是全新的错误呢(((

究竟如何解决

经过又一次的查阅,得知需要在docker的设置中添加下面的字段:

image-20241103115022562

Apply & restart 后再试一次,还是不行,这里就不放报错内容了,跟上一张报错是一样的

最后实在没办法,我尝试自己手动拉取node:20-alpine镜像:

1
docker pull node:20-alpine
image-20241103115424270

很迷惑啊,这样居然能成功,拉取到node:20-alpine镜像后我们再次运行sudo docker build -t hello-docker .

image-20241103115544891

可以看到成功了,这个算是代替方案吧,真的很迷惑为什么代理和镜像仓库全都不管用