Docker配置
sudo apt-get install docker-ce docker-ce-cli containerd.io
成功安装docker,前面配置key的时候有个warning,但应该无伤大雅:
基于Dockerfile构建并运行
假设你已经有编写好的dockerfile文件,执行命令完成构建(确保命令执行于程序代码目录):
sudo docker build -t [name] .
通过sudo docker images
命令可以查询到已经构建好的容器
正常情况下只需要借助命令就可以运行想要的镜像内容:
sudo docker run -p 8080:8080 -d --name xiaoming_1 xiaoming
- -p表示指定端口,前面为宿主机端口,后面为虚拟容器的端口
- -d表示在后台运行
- -name的第一个参数表示容器运行后的名字,第二个参数表示指定的镜像(image)
无法本地访问网站
容器开始运行后,访问localhost:8080
应该可以正常运行
但我在本地访问时无回显,借助curl命令得到如下反馈:
curl: (56) Recv failure: Connection reset by peer
几经周折,试过一些方法并没有效果,但收获一些经验,首先要确定你的容器应该运行起来
sudo docker exec -it xiaoming_1 pwd
这个表示在你的容器内做一个交互命令,如果没有bash环境,可以像这样执行一些简单的Linux命令,确保容器已经运行
没有问题后,继续排查问题,通过以下命令来确定虚拟容器正在监听的端口:
sudo docker logs xiaoming_1
我得到的回显是
Listening on 4000
由此找到问题的关键,我们在启动容器时指定的虚拟容器端口号有问题,正确的命令应该如下所示:
sudo docker run -p 8022:4000 -d --name xiaoming_1 xiaoming
-p指定参数时,虚拟容器的端口应该指定为4000才能够运行,宿主机端口只要不冲突即可
此时通过本地访问或者curl命令都可以正常回显了