2017-10-25 4 views
0

컨테이너 지원 운영 체제를 사용하는 새로운 구성으로 이제는 더 이상 사용되지 않는 컨테이너 이미지를 사용하는 기존 구성을 업그레이드하려고 https://cloud.google.com/container-optimized-os/docs/ 모든 문서를 참조했습니다. 그러나 아무것도 작동하지 않습니다! Docker 컨테이너를 포트 80 (예 : -p 80:80)에 바인드 할 수없고 Docker 컨테이너가 /var/run/nginx.pid (예, nginx를 사용하고 있습니다. 내 Docker 컨테이너). 나는 AppArmour를 비활성화시키는 지침을 따라 갔고 또한 nginx에 대한 AppArmour 프로파일을 만들려고 시도했습니다. 아무것도 작동하지 않습니다! 그들은 busybox 이미지를 사용하지 않고 "Hello World"또는 sleep을 인쇄하는 컨테이너 최적화 된 OS를 사용하여 거기에있는 모든 예제입니까? 포트를 열고 파일 시스템에 쓰는 예제는 어떻습니까?컨테이너 최적화 된 운영 체제 예

+0

-v 80:80은 -p 80:80이어야합니다. 오타가 있습니까? – koma

+0

@koma 고맙습니다. – dgrant

답변

3

방금 ​​컨테이너에 최적화 된 OS에 Apache Guacamole을 설치했으며 매력적으로 작동합니다. some constraints in place for security이 있습니다.

  • /TMP/실행/미디어/MNT을 : 그것의 일부가 쓰기로 마운트 다시 이하와 같이

    루트 파일 시스템은 ("/"), 읽기 전용으로 장착/disks 및/var/lib/cloud는 모두 tmpfs를 사용하여 에 마운트되며 쓰기가 가능하지만 해당 내용은 재부팅 사이에 보존되지 않습니다 ( ).

  • 디렉토리을/mnt/stateful_partition는,/var에 및/집이 위치는 재부팅 지속 데이터를 저장하는 데 사용할 수 있습니다 을 의미 상태 디스크 파티션에서 장착되어있다. 예를 들어, Docker의 작업 디렉토리/var/lib/docker는 재부트시 전체적으로 입니다.

  • /var/lib/docker 및/var/lib/cloud 만 "실행 가능"으로 마운트됩니다 (noexec 마운트 플래그가없는 ).

If you need to accept HTTP (port 80) connections from any source IP 주소, 당신의 컨테이너 Optimzied OS 인스턴스에서 다음 명령을 실행 : 일반적으로

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

, 당신이 클라우드 초기화를 통해 systemd 서비스로 호스트 방화벽을 구성하는 것이 좋습니다.

추 신 : 컨테이너 최적화 OS는 자동 업데이트가 가능합니다. 이 메커니즘을 사용하여 Compute Engine 인스턴스를 업데이트 할 수 있습니다.

+0

감사합니다. 나는 80 세까지 구속 할 수 없다고 믿는다. 오늘 밤에 보자. – dgrant

+0

나는 80 번 포트를 Docker에서 -80 : 80 포트를 사용하여 포트 80에 바인딩하는 것이 문제없이 포트 80에 바인딩됩니다. – koma