Dockerfile을 사용하여 포트 노출

Using Dockerfile Expose Ports



다음을 사용하여 기존 Docker 이미지에서 사용자 지정 Docker 이미지를 만드는 것은 정말 쉽습니다. 도커파일 . 일반적으로 사람들은 다음과 같은 최소한의 기본 이미지를 사용합니다. 알파인 또는 우분투/데비안 그 목적을 위해. 예를 들어 NodeJS로 작성된 즐겨찾는 웹 앱의 사용자 지정 Docker 이미지를 만들고 싶다고 가정해 보겠습니다. 앱은 포트에서 실행됩니다. 8080 . 기본적으로 포트에서 웹 앱에 액세스할 수 없습니다. 8080 호스트 컴퓨터에서. Docker에게 포트를 노출하거나 열겠다고 알려야 합니다. 8080 호스트 컴퓨터에서 액세스할 수 있습니다.

이 기사에서는 다음을 사용하여 포트를 노출하는 방법을 보여줍니다. 도커파일 실제 사례와 함께. 시작하자.







먼저 프로젝트 디렉토리를 생성해야 합니다. 이 디렉토리에 모든 프로젝트 파일과 도커파일 .



다음 명령을 실행하여 프로젝트 디렉터리를 만듭니다. 마이앱/ 사용자 HOME 디렉토리에서 다음으로 이동합니다.



$mkdir~/마이앱&& CD~/마이앱

웹 앱 준비:

이제 디렉토리를 생성하십시오. src/ 안에 ~/마이앱/ 다음 명령으로 디렉토리:

$mkdirsrc

에서 src/ 내 NodeJS 애플리케이션의 모든 소스 코드가 유지됩니다.

간단하게 만들겠습니다 앱.js 에 있는 파일 src/ 디렉토리 및 포트에서 간단한 웹 서버 실행 8080 단지 시연을 위해.

NS src/app.js 파일에는 다음 코드 줄이 포함되어 있습니다.

Dockerfile 작성 및 포트 노출:

이제 생성 도커파일 에서 ~/마이앱 다음 명령으로 디렉토리:

$만지다도커파일

이제 다음 줄을 입력하십시오. 도커파일 저장합니다. 이 줄이 무엇을 의미하는지 나중에 논의할 것입니다.

여기, 알파인에서:3.8 의미하다, 사용하다 알파인:3.8 여기에서 빌드할 새 이미지의 기반으로 도커 이미지 도커파일 .

APK 업데이트 실행 의미, 실행 APK 업데이트 기본 Docker 이미지의 명령 알파인:3.8 .

RUN apk add –no-cache nodejs 의미, 실행 APK 추가 NodeJS 프로그래밍 언어를 설치하는 명령 알파인:3.8 도커 기본 이미지.

복사 ./src /app 즉, 모든 파일을 복사 ~/myapp/src 디렉토리 /앱 를 사용하여 빌드할 새 Docker 이미지의 디렉토리 도커파일 .

CMD [/usr/bin/node, /app/app.js] 의미, 실행 /앱/앱.js 다음을 사용하여 새 컨테이너의 파일 마디 에 위치한 바이너리 /usr/bin/노드 .

마지막으로 노출 8080/tcp TCP 포트를 노출하거나 여는 것을 의미합니다. 8080 호스트 컴퓨터에.

Dockerfile을 사용하여 사용자 지정 Docker 이미지 만들기:

이제 사용자 정의 Docker 이미지를 만들어 보겠습니다. 알파인 노드:v1 를 사용하여 도커파일 우리가 방금 만든 것입니다.

먼저 ~/마이앱/ 디렉토리를 찾은 다음 다음 명령을 실행하여 사용자 지정 Docker 이미지를 만듭니다. 알파인 노드:v1 :

$도커 빌드-NS알파인 노드:v1 .

보시다시피 커스텀 Docker 이미지는 알파인 노드:v1 생성 중입니다. 필요한 기본 Docker 이미지 및 패키지를 인터넷에서 가져오고 있습니다.

보시다시피 커스텀 Docker 이미지는 알파인 노드:v1 성공적으로 생성됩니다.

사용자 지정 Docker 이미지 테스트:

이제 사용자 지정 Docker 이미지를 테스트할 수 있습니다. 알파인 노드:v1 아주 쉽게. 우리가 해야 할 일은 알파인 노드:v1 영상.

다음 명령을 실행하여 Docker 컨테이너를 만듭니다. www ~로부터 알파인 노드:v1 도커 이미지:

$도커 실행-NS -그것 --이름www 알파인 노드:v1

용기 www 생성됩니다.

이제 ip주소를 알아봅시다. www 다음 명령을 사용하여 Docker 컨테이너:

$도커 검사 www| 꽉 붙잡음주소

보시다시피 제 경우에는 IP 주소가 172.17.0.3 . 따라서 내가 작성한 NodeJS 애플리케이션은 포트의 웹 브라우저에서 액세스할 수 있어야 합니다. 8080 이 IP 주소의.

짜잔! 포트에 액세스할 수 있습니다. 8080 나의 www 도커 컨테이너.

이것이 기본적으로 빌드할 사용자 지정 Docker 이미지에서 특정 포트를 노출하는 방법입니다. 도커파일 .

Dockerfile을 사용하여 TCP 및 UDP 포트 노출:

이 기사의 앞부분에서 나는 당신에게 TCP 포트를 노출시키는 방법을 보여주었다. 도커파일 .

TCP 포트를 쉽게 노출할 수 있습니다. 53 ) 당신의 도커파일 다음 줄로 :

폭로하다53/TCP

UDP 포트를 노출할 수도 있습니다(UDP 포트가 53 ) 귀하의 도커파일 :

폭로하다53/UDP

다음 행을 사용하여 TCP 및 UDP 포트를 동시에 노출할 수 있습니다. 도커파일 :

폭로하다53/TCP
폭로하다53/UDP

사용할 프로토콜(TCP 또는 UDP)을 지정하지 않으면 기본적으로 TCP가 사용됩니다. 예를 들어 다음 줄을 작성하는 경우 도커파일 :

폭로하다53

그러면 Docker는 TCP 포트 53을 사용하려고 한다고 가정합니다.

Dockerfile을 사용하여 여러 포트 노출:

사용자 지정 MEAN 스택 Docker 이미지를 생성한다고 가정해 보겠습니다. 이 경우 일부 포트(예: TCP 포트 80 또는 8080)에서 HTTP 서버, TCP 포트 21에서 실행되는 FTP 서버, TCP 포트 3306에서 실행되는 SQL 데이터베이스 서버(MySQL이라고 가정), 또는 TCP 포트 27017 또는 27018에서 실행되는 NoSQL 데이터베이스 서버(MongoDB라고 함), TCP 포트 22에서 실행되는 SSH 서버. 포트가 많습니다!

좋은 소식은 다음과 같습니다. 다음을 사용하여 생성된 사용자 지정 Docker 이미지에 필요한 만큼의 포트를 노출할 수 있습니다. 도커파일 .

위의 예에서 포트는 다음 행으로 노출될 수 있습니다. 도커파일 :

폭로하다80/TCP
폭로하다8080/TCP
폭로하다이십 일/TCP
폭로하다22/TCP
폭로하다3306/TCP
폭로하다27017/TCP
폭로하다27018/TCP

원하는 경우 Docker가 기본적으로 TCP를 사용하므로 프로토콜 사양을 그대로 두고 다음 줄에서 동일한 작업을 수행할 수 있습니다. 도커파일 :

폭로하다80
폭로하다8080
폭로하다이십 일
폭로하다22
폭로하다3306
폭로하다27017
폭로하다27018

필요한 경우 TCP 및 UDP 포트를 혼합하여 사용할 수 있습니다. 도커파일 . 예를 들어, 위의 예와 함께 DNS 서버(UDP 포트 53에서 실행)를 실행하는 경우 도커파일 .

폭로하다80
폭로하다8080
폭로하다이십 일
폭로하다22
폭로하다53/UDP
폭로하다3306
폭로하다27017
폭로하다27018

이것이 바로 다음을 사용하여 포트를 노출하는 방법입니다. 도커파일 . 에 대해 자세히 알아보려면 도커파일 및 다음을 사용하여 포트 노출 도커파일 , 읽기 도커파일 참조 가이드 https://docs.docker.com/engine/reference/builder/#expose

이 기사를 읽어 주셔서 감사합니다.