容器优化的操作系统示例

时间:2017-10-25 04:27:53

标签: google-compute-engine google-container-os

我已按照此处的所有文档:https://cloud.google.com/container-optimized-os/docs/尝试将使用现已弃用的container-vm映像的现有配置升级到使用容器优化操作系统的新配置。但没有任何作用!我无法将Docker容器绑定到端口80(即-p 80:80),而且我的Docker容器似乎无法写入/var/run/nginx.pid(是的我正在使用nginx我的Docker容器)。我按照说明禁用AppArmour,我也尝试为nginx创建AppArmour配置文件。什么都行不通!他们是否使用容器优化的操作系统,不仅使用busybox图像并打印“Hello World”或睡眠!打开端口并写入文件系统的示例怎么样?

2 个答案:

答案 0 :(得分:3)

我刚刚在Container Optimized OS上安装了Apache Guacamole,它就像魅力一样。有some constraints in place for security

根文件系统(" /")以只读方式挂载,其中某些部分重新挂载为可写,如下所示:

  • / tmp,/ run,/ media,/ mnt / disks和/ var / lib / cloud都已挂载 使用tmpfs,虽然它们是可写的,但它们的内容却不是 在重新启动之间保留。

  • 目录/ mnt / stateful_partition,/ var 和/ home从有状态磁盘分区挂载,这意味着 这些位置可用于存储持续存在的数据 重新启动。例如,Docker的工作目录/ var / lib / docker是 重新启动时有状态。

  • 仅在可写位置中 / var / lib / docker和/ var / lib / cloud安装为"可执行文件" (即 没有noexec mount标志)。

If you need to accept HTTP (port 80) connections from any source IP地址,在Container-Optimzied OS实例上运行以下命令:

sudo iptables -w -A INPUT -p tcp --dport 80 -j ACCEPT

通常,建议您通过cloud-init将主机防火墙配置为systemd服务。

PS:容器优化的操作系统能够自动更新。此机制可用于更新一组计算引擎实例。

答案 1 :(得分:1)

  

我无法将Docker容器绑定到端口80(即-p 80:80),而且我的Docker容器似乎无法写入/var/run/nginx.pid(是的,在我的Docker容器中使用nginx)。

我认为您可能遇到了某些GCE防火墙问题。最好的方法是逐步验证/调试它:

  1. 尝试运行一个愚蠢的简单nginx容器: “ -d”要求Docker在守护程序模式下运行它,“-p 80:80”将HTTP端口映射,“-name nginx-hello”名称则将容器命名为nginx-hello。

    docker run -d --name nginx-hello -p 80:80 nginx
    
  2. (可选),验证容器是否正常运行:您应该看到列出的“ nginx-hello”容器。

    docker ps
    
  3. 验证nginx是否在本地工作:您应该会看到一个良好的HTTP响应。

    curl localhost:80
    

如果您能够正确验证上述所有步骤,则可能会遇到GCE防火墙问题:

How do I enable http traffic for GCE instance templates?