Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
Por predefinição, a firewall do anfitrião do SO otimizado para contentores permite ligações de saída e aceita ligações de entrada apenas através do serviço SSH. Pode ver a configuração exata da firewall do anfitrião executando sudo iptables -L numa instância de VM que execute o SO otimizado para contentores.
ou o Google Kubernetes Engine. Consulte a documentação específica do produto para ver mais
detalhes.
Tenha em atenção que a firewall do anfitrião é diferente das regras da firewall da nuvem privada virtual, que também têm de ser configuradas para que as suas aplicações funcionem corretamente.
Consulte a vista geral das regras de firewall para saber mais acerca das regras de firewall da nuvem privada virtual.
Executar contentores no espaço de nomes de rede predefinido do Docker
Se estiver a implementar um contentor no SO otimizado para contentores que tem de estar acessível através da rede e não estiver a usar a opção --net=host do Docker, execute o contentor com a opção -p do Docker. Com esta opção, o Docker configura automaticamente a firewall do anfitrião para expor a sua aplicação na rede. Consulte a referência de execução do Docker para saber mais sobre as opções de execução do Docker.
No exemplo seguinte, o contentor nginx vai estar acessível na rede na porta 80:
dockerrun--rm-d-p80:80--name=nginxnginx
"ip6tables -A INPUT -p tcp --dport 80 -j ACCEPT"
Executar contentores no espaço de nomes de rede do anfitrião
Se estiver a implementar um contentor no SO otimizado para contentores que tem de estar acessível através da rede e estiver a usar a opção --net=host do Docker, tem de configurar explicitamente a firewall do anfitrião.
Pode configurar a firewall do anfitrião com comandos iptables padrão. Tal como acontece com a maioria das distribuições GNU/Linux, as regras de firewall configuradas com comandos iptables não persistem após reinícios. Para garantir que a firewall do anfitrião está configurada corretamente em cada arranque, configure a firewall do anfitrião na sua configuração.cloud-init Considere o seguinte exemplo de cloud-init:
#cloud-configwrite_files:-path:/etc/systemd/system/config-firewall.servicepermissions:0644owner:rootcontent:|[Unit]Description=Configures the host firewall[Service]Type=oneshotRemainAfterExit=trueExecStart=/sbin/iptables -A INPUT -p tcp --dport 80 -j ACCEPT-path:/etc/systemd/system/myhttp.servicepermissions:0644owner:rootcontent:|[Unit]Description=My HTTP serviceAfter=docker.service config-firewall.serviceWants=docker.service config-firewall.service[Service]Restart=alwaysExecStart=/usr/bin/docker run --rm --name=%n --net=host nginxExecStop=-/usr/bin/docker exec %n -s quitruncmd:-systemctl daemon-reload-systemctl start myhttp.service
A utilização desta configuração cloud-init com uma VM que execute o SO otimizado para contentores resulta nos seguintes comportamentos em cada arranque:
A firewall do anfitrião é configurada para permitir ligações TCP recebidas na porta 80.
Um contentor nginx vai ouvir na porta 80 e responder a pedidos HTTP recebidos.
Consulte o artigo
Criar e configurar instâncias
para saber mais sobre a utilização do cloud-init no SO otimizado para contentores.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Difícil de entender","hardToUnderstand","thumb-down"],["Informações incorretas ou exemplo de código","incorrectInformationOrSampleCode","thumb-down"],["Não contém as informações/amostras de que eu preciso","missingTheInformationSamplesINeed","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 2025-08-21 UTC."],[[["\u003cp\u003eBy default, Container-Optimized OS allows outgoing connections and only accepts incoming connections via SSH, as seen with the \u003ccode\u003esudo iptables -L\u003c/code\u003e command, but this might vary with other Google Cloud products.\u003c/p\u003e\n"],["\u003cp\u003eUsing Docker's \u003ccode\u003e-p\u003c/code\u003e option automatically configures the host firewall for network accessibility when deploying a container on Container-Optimized OS without \u003ccode\u003e--net=host\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eFor IPv6 accessibility, the host firewall must be manually configured using \u003ccode\u003eip6tables\u003c/code\u003e commands because Docker does not automatically configure the IPv6 rules.\u003c/p\u003e\n"],["\u003cp\u003eWhen deploying a container on Container-Optimized OS with Docker's \u003ccode\u003e--net=host\u003c/code\u003e option, you must manually configure the host firewall with \u003ccode\u003eiptables\u003c/code\u003e commands.\u003c/p\u003e\n"],["\u003cp\u003eTo ensure persistent host firewall configurations across reboots when using \u003ccode\u003eiptables\u003c/code\u003e commands, utilize \u003ccode\u003ecloud-init\u003c/code\u003e to set up the firewall rules, such as allowing incoming TCP connections on port 80.\u003c/p\u003e\n"]]],[],null,["# Configuring the host firewall\n\nBy default, the Container-Optimized OS host firewall allows outgoing\nconnections and accepts incoming connections only through the SSH service. You\ncan see the exact host firewall configuration by running `sudo iptables -L` on a\nVM instance running Container-Optimized OS.\n| **Warning:** The default firewall configuration might be different if you are using Container-Optimized OS through another Google Cloud product like [Containers on Compute Engine](/compute/docs/containers/deploying-containers) or Google Kubernetes Engine. Refer to the product specific documentation for more details.\n\nKeep in mind that the host firewall is different from Virtual Private Cloud firewall\nrules, which must also be configured for your applications to work correctly.\nSee the [Firewall Rules Overview](/vpc/docs/firewalls) to learn more about\nVirtual Private Cloud firewall rules.\n\nRunning containers in Docker's default network namespace\n--------------------------------------------------------\n\nIf you are deploying a container on Container-Optimized OS that must be\naccessible over the network and you are not using Docker's `--net=host` option,\nrun your container with Docker's `-p` option. With this option, Docker will\nautomatically configure the host firewall to expose your application on the\nnetwork. See the\n[Docker run reference](https://docs.docker.com/engine/reference/run/) to learn\nmore about Docker run options.\n\nIn the following example, the `nginx` container will be accessible on the\nnetwork on port 80: \n\n docker run --rm -d -p 80:80 --name=nginx nginx\n\n| **Note:** If IPv6 address is used for accessing the deployed container over the network, you must explicitly configure the host firewall using `ip6tables` commands like `\"ip6tables -A INPUT -p tcp --dport 80 -j ACCEPT\"`.This is because Docker does not automatically configure the IPv6 rules for host firewall to expose your application on the network due to [known limitation](https://github.com/moby/moby/issues/21951).\n\nRunning containers in the host's network namespace\n--------------------------------------------------\n\nIf you are deploying a container on Container-Optimized OS that must be\naccessible over the network and you are using Docker's `--net=host` option, you\nmust explicitly configure the host firewall yourself.\n\nYou can configure the host firewall with standard `iptables` commands. As with\nmost GNU/Linux distributions, firewall rules configured with `iptables` commands\nwill not persist across reboots. To ensure that the host firewall is correctly\nconfigured on every boot, configure the host firewall in your `cloud-init`\nconfiguration. Consider the following `cloud-init` example: \n\n #cloud-config\n\n write_files:\n - path: /etc/systemd/system/config-firewall.service\n permissions: 0644\n owner: root\n content: |\n [Unit]\n Description=Configures the host firewall\n\n [Service]\n Type=oneshot\n RemainAfterExit=true\n ExecStart=/sbin/iptables -A INPUT -p tcp --dport 80 -j ACCEPT\n - path: /etc/systemd/system/myhttp.service\n permissions: 0644\n owner: root\n content: |\n [Unit]\n Description=My HTTP service\n After=docker.service config-firewall.service\n Wants=docker.service config-firewall.service\n\n [Service]\n Restart=always\n ExecStart=/usr/bin/docker run --rm --name=%n --net=host nginx\n ExecStop=-/usr/bin/docker exec %n -s quit\n\n runcmd:\n - systemctl daemon-reload\n - systemctl start myhttp.service\n\nUsing this `cloud-init` configuration with a VM running\nContainer-Optimized OS will result in the following behaviors on every\nboot:\n\n- The host firewall will be configured to allow incoming TCP connections on port 80.\n- An `nginx` container will listen on port 80 and respond to incoming HTTP requests.\n\nRefer to\n[Creating and configuring instances](/container-optimized-os/docs/how-to/create-configure-instance)\nto learn more about using `cloud-init` on Container-Optimized OS."]]