Docker,主机操作系统重启和繁忙端口

时间:2018-09-20 19:29:46

标签: docker port

我开始学习docker,并在Linux ubuntuserver 4.15.0-34-generic上使用它。我通过以下命令创建了容器:

sudo docker run -d --privileged --name FBSServer --hostname BACKUPSERVER --restart=always -p 4530:4530 -p 4531:4531 -v /home/adminek/synology:/fbs ferro/backupsystem FBS_Server

如您所见,容器正在侦听端口4530和4531。当我第一次运行此命令时,一切正常。容器正在运行,我可以使用端口4530/4531与应用通信。

但是在重新启动主机系统后,容器处于“退出”状态

root@ubuntuserver:~# docker ps -a
CONTAINER ID        IMAGE                COMMAND                  CREATED             STATUS                            PORTS               NAMES
6e77a4729847        ferro/backupsystem   "/start.sh FBS_Server"   7 hours ago         Exited (128) About a minute ago                       FBSServer

,我无法启动容器。我看到了:

root@ubuntuserver:~# docker container start FBSServer
Error response from daemon: driver failed programming external connectivity on endpoint FBSServer (c2afb35a61a18c65e8c306bbf36d4e2c9cdf428aafa386e12281d2d9e714b238): Error starting userland proxy: listen tcp 0.0.0.0:4531: bind: address already in use
Error: failed to start containers: FBSServer

为了开始,我必须输入以下命令:

root@ubuntuserver:~# lsof -i :4530 | grep LISTEN
docker-pr 1328 root    4u  IPv6  35086      0t0  TCP *:4530 (LISTEN)
root@ubuntuserver:~# lsof -i :4531 | grep LISTEN
docker-pr 1316 root    4u  IPv6  35059      0t0  TCP *:4531 (LISTEN)

然后我杀死进程(在此示例中为1328和1316),然后可以通过键入以下内容启动容器:

docker container start FBSServer

所以问题1: 重新引导后,为什么主机系统端口“繁忙”?

和数字2: 为什么有时在重启主机系统后,我发现容器中的更改未保存?换句话说-重启后,上面容器中的命令已启动,但它的状态没有最后更改,我在重启主机之前做了一会儿。

2 个答案:

答案 0 :(得分:1)

通常,如果您的 docker 容器自动启动并分配一些端口,则您错误地添加了选项 --restart 以自动启动容器。

所以如果你重启 docker 服务后,docker-pr 服务分配了某个容器的端口,你的容器会自动启动。

启动 docker 后,检查是否有一些容器正在运行:

docker ps

要停止这个容器,我们可以使用:

docker stop container_name

如果您有多个容器,我们可以使用:

docker stop $(docker ps -a -q)

通常,如果您有某个容器自动启动,您可以使用 docker --restart 进行设置,我们需要将其从自动重启中移除。

要做到这一点,请使用以下命令:

docker update --restart=no container_name

此后,您将能够重新启动 docker 服务,并且您将不会发现任何容器自动启动。

答案 1 :(得分:0)

尝试在sudo /etc/init.d/docker restart之后重新启动docker服务,它应该可以解决问题