(二)docker无法访问github但可以访问gitee

错误信息: gnutls_handshake() failed: The TLS connection was non-properly terminated.

配docker的时候,遇到一个很奇怪的问题,gitee上的仓库就可以拉下来,但是github上的就拉不下来
在这里插入图片描述
根据问答:docker run 命令加上–network=host 指定的端口就不生效
在这里插入图片描述
所以这里由于我启动容器的时候是以指定端口的方式,所以容器里的网络并不能访问github(没有共享主机的网络)在这里插入代码片

另外根据问题:
Docker container unable to clone from github.com
可以知道,确实问题就出在启动镜像时的端口/网络设置上。

解决方法

其实就是要在docker run的时候加上--net=host这个参数。
但是由于这个参数只能在run的时候添加,所以。。。就比较尴尬

灵机一动
由于我当时创建容器的时候,指定了容器和本机映射的目录

 docker run -it -d --gpus "device=3" --ipc=host -p 10035:22 -v  /ws/huangshan:/ws --name "OCR" paddlepaddle/paddle:2.0.1-gpu-cuda11.0-cudnn8 bash -c "/etc/rc.local; /bin/bash"

所以我完全可以在本机那个映射的目录下使用git clone,这样本机clone的内容就会自动显示在容器中,我真是个天才!
类似这样,哈哈哈!
在这里插入图片描述

docker run/exec/attach三者的区别

关于docker run和docker exec的区别,参考网上资料

“docker run”通常是在新创建的容器中所使用的命令。 它适用于在没有其他容器运行的情况下,您想要创建一个容器,并且要启动它,然后在其上运行一个进程。在“docker run”命令之后,您必须通过指定镜像来创建容器,同时还可以指定其他一些相关参数。
docker run=创建+初始化一个容器

docker exec:Run a command in a running container,就是在一个正在运行的容器中执行命令,exec是针对已运行的容器实例进行操作,在已运行的容器中执行命令,不创建和启动新的容器,退出shell不会导致容器停止运行。
“docker exec”适用于在现有容器中运行命令的情况。如果您已经拥有了一个正在运行的容器,并希望更改该容器或从中获取某些内容,那么使用“docker exec”命令就非常合适了。

docker attach:Attach local standard input, output, and error streams to a running container,将本机的标准输入(键盘)、标准输出(屏幕)、错误输出(屏幕)附加到一个运行的容器,也就是说本机的输入直接输到容器中,容器的输出会直接显示在本机的屏幕上,如果退出容器的shell,容器会停止运行。

猜你喜欢

转载自blog.csdn.net/Castlehe/article/details/115129098