学习docker容器有几处地方不太理解?

问题1: 我使用的是centos 7 系统, 一般都会开启防火墙, docker服务启动之后会自动在防火墙中添加一些规则, 但是防火墙重启之后经常会导致 docker容器重启失败,需要在重启下docker 服务就好了 , 请问这个故障原理是什么? 问题2; 如果把单节点上 已经运行的容器 迁移到 swarm 集群中,实现高可用。 问题3; 从开源镜像仓库中的 拉去下来的镜像,启动后, 启动进程(就是1号进程)都是 镜像中定义好的, 请问能否手动修改?比如 官网上拔下来的nginx 镜像。 把启动进程改成其他进程是否可以?如何做?

看看你用的docker里面开了什么端口,在防火墙上允许这些端口。
要高可用,节点必须自己互为备份,去中心化才行。
用docker run修改 https://www.cnblogs.com/blackmood/p/12182905.html

1.第一个问题没遇到过,你应该把/var/log/messages中关于docker重启容器报错的信息看一下,或jourct -u docker -f,再去启动容器
2.现在swarm都不怎么用了,你是要把单节点上运行的容器迁移到swarm集群?有什么难点?
3.1进程都是Dockerfile里面写好的,你能找到镜像一般都以有Dockerfile,自己跟着改一下就可以

  1. 如果只是单纯使用 docker run 的命令直接运行容器,那么 DOCKER 在将容器的地址信息记录到 docker0 网卡中以及如果是使用 IPTABLES 的方式配置网络的话就只是一次性的,关闭防火墙会初始化这些规则,据我所知的话,docker-compose,docker swarm,k8s 方式都不会有这种情况
  2. 单点以 docker run 方式运行的容器想要移植到 docker swarm 中,需要一个 YAML 格式的配置文件,你可以去官网或者 https://juejin.im/post/6844903938873917448 查看 V3 版本的写法,docker stack deploy -c docker-compose.yaml name
  3. 修改 DOCKERFIL 或者 EntryPoint 和 cmd