Docker进程隔离问题:为什么在宿主机中ps aux可以看到Docker容器里的进程?


环境:
宿主机: 阿里云-UbuntuServer 14.04.2 ,
Docker:1.8.1
镜像1: 主要是nginx+php,除次以外还有写其他服务在跑,如:rsync,crond等
镜像2: MySQL(官方镜像)
镜像3: Redis(官方镜像修改)

宿主机上跑了多个不同类型的容器,分别监听不同端口,想要在宿主机上配置个nginx反向代理,发现已经有一个进程在跑,服务起不来;进入web(php-nginx)容器中杀死进程后,宿主机上的进程就不见了;
  1. 以上3个镜像启动后,在宿主机使用ps aux命令查看都可以看到相应的进程,这是为什么?
  2. 隔离指的又是什么?
  3. 我想用nginx代理转发请求给Docker容器如何做?
已邀请:

oilbeater - 北大学渣@灵雀云

赞同来自: 徐磊


不邀自来

<ol><li>因为 docker 启动容器在宿主机上来看就是一个进程,宿主机对所有的运行程序都有控制权限,自然可以看到相应进程。</li><li>隔离指的是容器之间的隔离,你在一个容器内是无法访问到另一个容器的内容,你可以 exec 到一个容器内部再 ps 看一下</li><li>如果你要在宿主机上配置 nginx 那么需要让宿主机的 nginx 和 容器中的 nginx 监听不同的端口,否则肯定会冲突。容器启动时可以通过 -p 将 80 转到宿主机上另一个端口,这样就不会和宿主机上默认的端口冲突,你可以试一下</li></ol>
以上

要回复问题请先登录注册