개발 ON
  • [Network | Docker] 컨테이너 외부 노출
    2024년 06월 30일 21시 32분 14초에 업로드 된 글입니다.
    작성자: 이주여이

    1. 호스트 포트와 바인딩할 컨테이너 생성하기

    Ubuntu

    docker pull ubuntu:latest # ubuntu 최신 버전 다운로드
    docker images # 다운로드한 이미지 확인
    
    docker run -it --name ubuntu -p 80:80 ubuntu:latest
    
    apt-get update
    apt-get install apache2 -y # apache 설치
    service apache2 start # apache 실행

     

    Rocky Linux

    docker pull rockylinux:9.3 # ubuntu 최신 버전 다운로드
    docker images # 다운로드한 이미지 확인
    
    docker run -it --privileged --name rockylinux -p 8081:80 rockylinux/rockylinux /usr/sbin/init
    
    docker exec -it rockylinux /bin/bash # shell 모드 접속
    
    yum install httpd
    systemctl start httpd
    systemctl status httpd
    systemctl enable httpd
    • -i - interactive / 표준 입력을 활성화하여 사용자가 컨테이너와 상호 작용할 수 있게 도와준다.
    • -t - 가상 터미널을 할당하여 shell 모드 진입을 도와준다.
    • -d - 컨테이너를 백그라운드에서 실행시킨다.
    • --privileged - 컨테이너 내부 주요 자원에 접근할 수 있다.
    • --name - 컨테이너에 특정 이름을 부여한다.
    • -p
      • -p ${호스트 포트 }: ${컨테이너 포트}
      • 컨테이너의 포트를 호스트의 포트와 바인딩해 연결할 수 있는 속성
      • (예) -p 3307:3307 -p 192.168.56.103:80:80
      • 만약 여러 개의 포트를 외부에 개방하려면 -p 옵션을 여러 번 설정하면 된다.
    • exec - docker 컨테이너 내 특정 명령을 입력하거나 shell에 접근할 수 있다.
    • /usr/sbin/init - 컨테이너 띄울 때 함께 실행한다. 해당 옵션과 --privileged 옵션이 함께 사용되어야 systemctl 이 동작한다.

     

    이후 모든 컨테이너들을 확인하면 아래와 같이 나타난다.

    3. URL 접속

    ${호스트 PC(도커를 설치한 가상 서버)의 IPv4 }:${컨테이너 생성 시 바인딩한 port 번호 } 를 입력해주면 아래와 같이 출력된다.

     

    Ubuntu - 192.168.56.103:80

     

    Rocky Linux - 192.168.56.103:8081


    참고 레퍼런스

    https://coding-orca.tistory.com/7

    댓글