Docker에서 노출은 정보를 표시하는 것을 의미하며 문서 표현 방법으로, 개발자는 dockerfile의 이미지로 어떤 서비스를 열 수 있는지 빠르게 알 수 있으므로 운영 및 유지 관리 담당자가 더 쉽게 사용할 수 있습니다. 컨테이너를 생성하면 어떤 포트를 열어야 할지 알 수 있습니다. 노출 포트가 없으면 컨테이너 간 서비스도 서로 액세스할 수 있습니다.
이 튜토리얼의 운영 환경: linux7.3 시스템, docker 버전 19.03, Dell G3 컴퓨터.
Dockerfile의 노출은 태그 정보입니다. 포트를 직접 열 수는 없으므로 운영 및 유지 관리 담당자가 컨테이너 사용 시 어떤 포트를 열어야 하는지 알 수 있어 편리합니다. docker run -itd -P xxx:xxx 를 사용하는 경우 Capital -P는 Dockerfile 파일에서 EXPOSE를 사용하여 정의된 포트를 매핑하므로 수동으로 -p: 이 형식을 수행할 필요가 없습니다.
EXPOSE는 단지 문서 표현 방법일 뿐입니다. dockerfile에서 개발자는 이미지로 어떤 서비스가 열리는지 빠르게 이해할 수 있습니다. EXPOSE 포트가 없으면 컨테이너 간 서비스도 서로 접근할 수 있다.
Docker에서 노출과 게시(run -p)의 차이점
여기서 주요 기록은 최근에 docker를 사용하여 발견한 약간의 의심입니다. 요약하면 다음과 같습니다.
docker에서 명령줄이 시작될 때 docker run -p 노출 인터페이스와 dockerfile의 노출 인터페이스 사이의 차이점과 연결은 무엇입니까?
구체적인 설명은 다음과 같습니다.
예를 들어 먼저 Dockerfile에 8080 포트를 노출합니다
EXPOSE 8080
그런 다음 나중에 사용할 수 있도록 이 이미지를 빌드합니다
docker build -t myimage - Dockerfile
그런 다음 docker run을 사용하여 컨테이너를 시작합니다. 이 이미지 예제 및 포트 게시
docker container run -d -p 8080 myimage
여기에 제가 언급한 질문이 있습니다. Dockerfile에서 Expose 포트 8080을 선언했는데 왜 여전히 포트(-p)를 게시해야 합니까? 둘의 차이점과 연결은 무엇인가요? 직접
docker container run -d myimage
이 경우 노출된 포트가 있나요?
테스트 후, (테스트 과정은 생략되어 관심있는 친구들이 직접 테스트해볼 수 있습니다. 사실 둘 사이에는 본질적인 차이가 있고 어느 정도의 상관관계도 있습니다.
여기에 나열하겠습니다. 4개 조합
A, Dockerfile
B에서 -p를 노출하거나 실행하지 않고 Dockerfile
C에서 포트만 노출하고 Dockerfile에서 동시에 노출하고 -p
D를 실행하고 -만 실행합니다. p
1------A의 경우, 이 컨테이너에서 시작된 서비스는 호스트 호스트와 외부 네트워크, 링크 컨테이너에서 접근할 수 없으며, 이 컨테이너 내부에서만 사용할 수 있습니다
2-- ------상황 B의 경우, 이 컨테이너에서 시작된 서비스는 docker 외부 세계(호스트 및 다른 호스트)에서 액세스할 수 없지만, 컨테이너
link
를 통해 다른 링크의 컨테이너에서 액세스할 수 있습니다. -------C 사례의 경우 시작된 cotnainer는 docker 외부 세계에서 액세스할 수 있으며, 링크 컨테이너에서도 액세스할 수 있습니다.
4---------case D의 경우, in 사실, docker 케이스 C와 동등한 특별한 암시적 변환이 이루어집니다. 외부 세계와 링크의 컨테이너에서 액세스할 수 있습니다. (이것은 docker가 포트를 열어야 하기 때문에 그렇게 믿기 때문에 사실입니다
외부 세계로 나오면 다른 컨테이너가 확실히 액세스할 수 있으므로 docker는 자동으로 Expose
권장 학습: "docker video tutorial"
위 내용은 도커에서 노출이란 무엇을 의미합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!