SSL이 제대로 작동하려면 WordPress 설치를 자체 서버로 마이그레이션해야 했습니다. 원래는 외부 SSL 인증서 설치를 허용하지 않는 GoDaddy 공유 호스팅에서 호스팅됩니다.
약간 편집증이 있고 보안에 대해 알고 있었기 때문에 Docker 컨테이너 내에서 서비스를 실행하여 최악의 피해를 제한하고 싶었습니다.
Docker 컨테이너를 연결하는 방법을 잘 모르겠습니다. 예를 들어, MySQL/MariaDB를 실행하는 Docker 컨테이너가 있지만 WordPress PHP 코드를 호스팅하고 실행하는 FastCGI를 실행하는 다른 Docker 컨테이너와 해당 서비스를 공유하는 방법을 모르겠습니다.
내 웹 서버(NGINX)는 현재 Docker 컨테이너 외부에서 실행 중이며 Docker 컨테이너의 노출된 포트로 사물을 프록시하는 데 아무런 문제가 없습니다. 하지만 FastCGI 서버(즉, PHP)가 MySQL 컨테이너에 어떻게 액세스할 수 있습니까?
Docker에서 여러 독립 서비스를 페어링하는 방법을 자세히 설명하는 가이드가 있나요?
답변1
Docker 컨테이너가 작동하는 방식은 다르게 설정하지 않는 한 기본적으로 격리된다는 것입니다.
질문에 대답하려면 필요한 포트를 열고 해당 포트를 통해 컨테이너를 연결하면 지정한 포트를 통해서만 통신할 수 있습니다.
Dockerfile에 지정된 경우 이 명령을 "EXPOSE"라고 합니다.http://docs.docker.io/reference/builder/#expose
EXPOSE 41000
컨테이너를 시작할 때 컨테이너가 시작될 때 노출하려는 포트를 전달할 수도 있습니다(원본 Dockerfile에 지정된 포트 재정의).
sudo docker run -p 41000:41000 -d <your username>/<your image name>
-p, --publish=[] 컨테이너의 포트를 다음 형식으로 호스트에 게시합니다. ip:hostPort:containerPort | ip::container port | hostPort:containerPort(실제 매핑을 보려면 "docker port" 사용)
링크도 참조하세요,http://docs.docker.io/use/working_with_links_names/#working-with-links-names
WordPress 및 Docker에 대한 추가 정보:
답변2
Docker는 실제로 가상화를 수행하지 않으며 LXC 컨테이너 가상화를 사용하여 이미지를 처리하고 실행하는 도구일 뿐입니다. 나는 실제로 여기에서 LXC와 그 기능을 찾고 있다고 생각합니다. LXC는 가상 네트워킹을 할 수 있고, MySQL은 네트워크를 통해 접속할 수 있다. 필요한 유일한 것은 빌딩 블록을 서로 연결하는 것입니다.
일반적인 설정에서 각 호스트는 고유한 IP 주소와 열린 포트 집합을 가지며 각 호스트는 가상 네트워크를 통해 다른 호스트의 TCP/IP 서비스에 액세스할 수 있습니다. 보안은 Linux 커널에 의해 처리됩니다. 보안을 처리하는 한 가지 방법은 오래된 iptables 기반 방화벽을 사용하는 것입니다. 그러나 selinux 태그를 기반으로 하는 다른 방법이 있을 수 있습니다.