【Docker】CentOS7.8의 docker에 nginx를 기동

소개



docker 학습의 일환으로 다음을 실시했습니다.

1. CentOS7.8에 docker 설치
2.nginx 설치 및 시작
3.html 파일 생성 및 표시

이번은, 이쪽의 흐름에 대해 해설해 가고 싶습니다.

환경



· HyperVisor
VMware Workstation 15 Player

· 가상 머신
CPU:2
메모리 : 10088MB
HDD:300GB
네트워크 어댑터 : 브리지
※NIC는 1개가 됩니다.

・OS
CentOS7.5(1804)
※「yum update」에 의해 「CentOS7.8(2003)」로 업데이트
[root@tspdocker yum.repos.d]# cat /etc/redhat-release
CentOS Linux release 7.8.2003 (Core)
[root@tspdocker yum.repos.d]#

※ 가상 머신 설정의 근거 (네트워크 어댑터 설정)



구성도



이번 구성은 이쪽이 됩니다.



사전 설정



아래에 대해 사전에 설정이 완료됩니다.
  • 호스트명:tspdocker
  • IP 주소:192.168.0.40
  • DNS:8.8.8.8,8.8.4.4
    Google Public DNS 를 사용하고 있습니다.
  • firewalld:정지/자동 기동 정지
  • selinux:사용 안 함
  • NTP : 설정 (ntp.nict.jp)
  • yum update:완료

  • 절차



    도커 준비



    이전 버전의 docker 제거


    yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
    

    공식 리포지토리 설치


    yum install -y yum-utils device-mapper-persistent-data lvm2
    yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    

    DOCKER CE 설치



    최신 버전의 Docker CE를 설치합니다.
    yum install -y docker-ce docker-ce-cli containerd.io
    

    Docker 시작/자동 시작



    Docker 시작
    systemctl start docker
    

    Docker 자동 시작 설정
    systemctl enable docker
    

    버전 확인


    docker --version
    

    실행 예
    [root@tspdocker yum.repos.d]# docker --version
    Docker version 19.03.9, build 9d988398e7
    [root@tspdocker yum.repos.d]#
    

    docker에서 nginx 준비



    nginx의 이미지 획득


    docker pull nginx
    

    실행 예
    [root@tspdocker yum.repos.d]# docker pull nginx
    Using default tag: latest
    latest: Pulling from library/nginx
    afb6ec6fdc1c: Pull complete
    b90c53a0b692: Pull complete
    11fa52a0fdc0: Pull complete
    Digest: sha256:30dfa439718a17baafefadf16c5e7c9d0a1cde97b4fd84f63b69e13513be7097
    Status: Downloaded newer image for nginx:latest
    docker.io/library/nginx:latest
    [root@tspdocker yum.repos.d]#
    

    이미지 확인


    docker images
    

    실행 예
    [root@tspdocker yum.repos.d]# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    nginx               latest              9beeba249f3e        8 days ago          127MB
    [root@tspdocker yum.repos.d]#
    

    nginx 시작


    docker run -d -p 8080:80 nginx
    

    실행 예
    [root@tspdocker yum.repos.d]# docker run -d -p 8080:80 nginx
    b631bfb26b8eb469437f55731abadc6d1e308149bf89062d0282ae11db722faa
    [root@tspdocker yum.repos.d]#
    

    nginx 시작 확인


    docker ps -a
    

    실행 예
    [root@tspdocker yum.repos.d]# docker ps -a
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
    b631bfb26b8e        nginx               "nginx -g 'daemon of…"   10 seconds ago      Up 9 seconds        0.0.0.0:8080->80/tcp   vibrant_engelbart
    [root@tspdocker yum.repos.d]#
    

    WEB 화면 확인



    "http://<서버의 IP 주소>:8080"에 브라우저로부터 액세스
    예) htp://192.168.0.40:8080/

    액세스하면 이쪽의 화면이 표시된다.



    실제로 html 파일을 만든 후 표시



    컨테이너에 로그인



    컨테이너 이름 확인
    docker ps -a
    

    실행 예
    [root@tspdocker yum.repos.d]# docker ps -a
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
    b631bfb26b8e        nginx               "nginx -g 'daemon of…"   3 hours ago         Up 3 hours          0.0.0.0:8080->80/tcp   vibrant_engelbart
    [root@tspdocker yum.repos.d]#
    

    →실행예의 경우는 「vibrant_engelbart」가 컨테이너명.

    컨테이너에 로그인
    docker exec -it vibrant_engelbart /bin/bash
    

    → "vibrant_engelbart"는 컨테이너 이름

    실행 예
    [root@tspdocker yum.repos.d]# docker exec -it vibrant_engelbart /bin/bash
    root@b631bfb26b8e:/#
    

    OS 버전 확인
    cat /etc/os-release
    

    실행 예
    root@b631bfb26b8e:/# cat /etc/os-release
    PRETTY_NAME="Debian GNU/Linux 10 (buster)"
    NAME="Debian GNU/Linux"
    VERSION_ID="10"
    VERSION="10 (buster)"
    VERSION_CODENAME=buster
    ID=debian
    HOME_URL="https://www.debian.org/"
    SUPPORT_URL="https://www.debian.org/support"
    BUG_REPORT_URL="https://bugs.debian.org/"
    root@b631bfb26b8e:/#
    

    → OS가 "Ubuntu"인지 확인

    vim/sudo 설치



    ※파일 편집에 사용하는 패키지가 됩니다.

    설치 가능한 패키지 목록 업데이트
    apt-get update
    

    실행 예
    root@b631bfb26b8e:/# apt-get update
    Get:1 http://deb.debian.org/debian buster InRelease [121 kB]
    Get:2 http://security.debian.org/debian-security buster/updates InRelease [65.4 kB]
    Get:3 http://deb.debian.org/debian buster-updates InRelease [49.3 kB]
    Get:4 http://security.debian.org/debian-security buster/updates/main amd64 Packages [201 kB]
    Get:5 http://deb.debian.org/debian buster/main amd64 Packages [7905 kB]
    Get:6 http://deb.debian.org/debian buster-updates/main amd64 Packages [7380 B]
    Fetched 8350 kB in 3s (3209 kB/s)
    Reading package lists... Done
    root@b631bfb26b8e:/#
    

    vim 설치
    apt-get install vim
    apt-get install sudo
    

    HTML 파일의 깨짐 방지


    export LANG=C.UTF-8
    export LANGUAGE=en_US:
    env | grep LANG
    

    ※이쪽은 일시적인 설정이 됩니다. (로그아웃하면 재설정됩니다.)

    실행 예
    root@b631bfb26b8e:/usr/share/nginx/html# export LANG=C.UTF-8
    root@b631bfb26b8e:/usr/share/nginx/html# export LANGUAGE=en_US:
    root@b631bfb26b8e:/usr/share/nginx/html#
    root@b631bfb26b8e:/usr/share/nginx/html# env | grep LANG
    LANGUAGE=en_US:
    LANG=C.UTF-8
    

    html 작성



    html의 기본 루트 디렉토리는 "/usr/share/nginx/html"입니다.

    test용 html 파일 작성


    vim /usr/share/nginx/html/test.html
    

    기재 내용
    <!DOCTYPE html>
    <meta http-equiv="content-type" charset="utf-8">
    <html>
      <head>
        <title>主な要素</title>
      </head>
      <body>
           <h1>タイトル</h1>
           <h2>副題</h2>
    
           <p>
            これはパラグラフです。文節を記述するためのタグです。
            一部分だけをマーキングする場合は<span>スパン</span>を使用します。
           </p>
    
           <h3>
             箇条書きの例
           </h3>
             <ul>
               <li>HTMLの基本</li>
               <li>スタイルの基本</li>
               <li>スクリプトの基本</li>
             </ul
    
             <button>OKボタン</button>
             <button>NGボタン</button>
      </body>
    </html>
    

    작성한 html 파일 표시



    「http://<서버의 IP 주소>:8080/test.html」에 브라우저로부터 액세스
    예) htp://192.168.0.40:8080/에서 st. HTML

    이 화면이 표시됩니다.



    참고 기사



    Install Docker on CentOS 7
    docker의 nginx 문서 루트
    Docker Docker에서 Nginx를 시작하여 웹 페이지를 표시합니다.

    좋은 웹페이지 즐겨찾기