Docker 常见容器问题


Docker 轻松学习



文章目录

  • Docker 常见容器问题
  • 一、Docker 是什么?
  • 二、容器退出后,通过 docker container ls 命令查看不到,数据会丢失么?
  • 三、如何停止所有正在运行的容器?
  • 四、如何批量清理已经停止的容器?
  • 四、如何获取某个容器的 PID 信息?
  • 五、如何获取某个容器的 IP 地址?
  • 六、如何给容器指定一个固定 IP 地址?
  • 七、如何临时退出一个正在交互的容器的终端,而不终止它?
  • 八、使用 docker port 命令映射容器的端口时,系统报错“Error: No public port ‘80’ published for xxx”?
  • 九、可以在一个容器中同时运行多个应用进程么?
  • 十、如何控制容器占用系统资源(CPU、内存)的份额?
  • 十一、Docker启动报错 Error response from daemon
  • 总结



一、Docker 是什么?

docker是一种技术,能使得应用在任何环境都能用的打包技术。打包出的东西叫镜像。

二、容器退出后,通过 docker container ls 命令查看不到,数据会丢失么?

容器退出后会处于终止(exited)状态,此时可以通过 docker container ls -a 查看,其中的数据也不会丢失。
代码如下(示例):

docker container ls -a

还可以通过 docker start 命令来启动它。只有删除掉容器才会清除所有数据。

docker start

三、如何停止所有正在运行的容器?

docker stop $(docker container ls -q)

四、如何批量清理已经停止的容器?

docker container prune

四、如何获取某个容器的 PID 信息?

docker inspect --format '{{ .State.Pid }}' <CONTAINER ID or NAME>

五、如何获取某个容器的 IP 地址?

docker inspect --format '{{ .NetworkSettings.IPAddress }}' <CONTAINER ID or NAME>

六、如何给容器指定一个固定 IP 地址?

docker network create -d bridge --subnet 172.0.0.1/16 my-net

docker run --network=my-net --ip=127.0.0.1 -itd --name=my-container busybox

七、如何临时退出一个正在交互的容器的终端,而不终止它?

Ctrl-p 
Ctrl-q

八、使用 docker port 命令映射容器的端口时,系统报错“Error: No public port ‘80’ published for xxx”?

* 创建镜像时 Dockerfile 要通过 EXPOSE 指定正确的开放端口;
* 容器启动时指定 PublishAllPort = true。

九、可以在一个容器中同时运行多个应用进程么?

一般并不推荐在同一个容器内运行多个应用进程。如果有类似需求,可以通过一些额外的进程管理机制,比如 supervisord 来管理所运行的进程。

十、如何控制容器占用系统资源(CPU、内存)的份额?

在使用 docker create 命令创建容器或使用 docker run 创建并启动容器的时候,可以使用 -c|–cpu-shares[=0] 参数来调整容器使用 CPU 的权重;使用 -m|–memory[=MEMORY] 参数来调整容器使用内存的大小。

十一、Docker启动报错 Error response from daemon

Error response from daemon: driver failed programming external connectivity on endpoint gloomy_kirch

systemctl restart firewalld
systemctl restart docker

总结

遇到 Docker 问题不要怕,记下来,下次省的忘记了


希望这个博客能对你有所益处。我是轻王,我为自己代言。