记录初学docker踩的坑

众所周知,docker配置复杂的环境很方便。

我就用来配置本地的golang环境(先前本机没装好,总是路径不对,干脆使用docker来装),

结果遇到了几个问题,用了半天时间才解决,搜索引擎误我!!!

安装

安装什么的不用我仔细说了把,

我安装的是docker desktop,版本如下

批注 2020-07-26 161701.png

安装好后,打开cmd,输入docker可以查看有哪些命令,

批注 2020-07-26 162339.png

使用docker pull golang,可以安装最新版本的golang,

更换国内源

默认源在国外,众所周知的原因,

所以可以在docker desktop的setting中修改registry-mirrors:[],示例如下:

批注 2020-07-26 162804.png

我的配置

1
2
3
4
5
6
7
8
{
"registry-mirrors": [
"https://registry.docker-cn.com"
],
"insecure-registries": [],
"debug": true,
"experimental": false
}

部分国内源

1
2
3
4
5
6
7
https://registry.docker-cn.com

https://hub-mirror.c.163.com

https://docker.mirrors.ustc.edu.cn

https://aa25jngun.mirror.aliyuncs.com

修改配置后,记得点击Apply & Restart,重启docker。

连接docker的坑

我使用的是jetbrains家的Goland,不要问,问就是牛逼。

新建项目,新建一个hello.go

1
2
3
4
5
6
7
8
package go_test

package main
import "fmt"

func main(){
fmt.Printf("hello world\n")
}

肯定不能直接点运行呀,会报错。

所以,准备连接本地的docker,

批注 2020-07-26 163546.png

这个时候就是我踩坑的时候了,

图中连接中...,过了一会儿,显示的是,

1
2
3
无法连接:io.netty.channel.AbstractChannel$AnnotatedConnectException:Connection refused:no further
information:localhost/127.0.0.1:2375
caused by:java.net.ConnectException:Connection refused:no further information

解决办法

打开power shell,

输入Test-NetConnection -ComputerName localhost -Port 2375,测试连接本地Docker端口

输出的是,

1
2
3
4
5
6
7
警告: TCP connect to (::1 : 2375) failed                                                      
ComputerName : localhost
RemoteAddress : 127.0.0.1
RemotePort : 2375
InterfaceAlias : Loopback Pseudo-Interface 1
SourceAddress : 127.0.0.1
TcpTestSucceeded : False

然后,

找到控制面板\网络和 Internet\网络连接

除了你正在使用的网络,其他全部禁用,如图

批注 2020-07-26 165814.png

然后重启docker desktop,再测试一波。

1
2
3
4
5
6
7
警告: TCP connect to (::1 : 2375) failed                                                      
ComputerName : localhost
RemoteAddress : 127.0.0.1
RemotePort : 2375
InterfaceAlias : Loopback Pseudo-Interface 1
SourceAddress : 127.0.0.1
TcpTestSucceeded : True

相信你也猜到了,这是你之前开过虚拟机造成的:)

运行go程序

接下来的操作就很常规了,

编辑运行/调试配置,点击+,创建Docker镜像,服务器已经自动匹配上了刚才连接成功的本地docker,只需要输入image ID or name即可,然后先点击“应用”,再确定,就可以运行demo了。

PS:关于image ID or name,可以打开cmd,输入docker images查看。