(빠른 Docker 사용을 위해) Docker 시작

13486 단어 Docker

개시하다


이 기사는 Docker를 신속하게 사용할 수 있도록 쓴 것이다.
구체적으로 말하면
  • Docker에 대한 대체적인 이해
  • 단순한 환경 구축
  • Docker Hub 공유를 통해 생성된 환경
  • 를 목표로 삼았다.
    따라서 더 깊이 이해하고 싶은 사람은 아래의 기사를 참고하면 된다.
  • [도해] Docker의 전체적인 이미지를 이해하기 - 전편-
  • 이제야 입문했으니 간단명료하게 정리해 보자
  • Docker를 지원하는 기술
  • Docker 소개


    삼행

  • Linux 커널 기능인 컨테이너형 가상화를 사용하는 어플리케이션 실행 환경을 구축하는 도구
  • OS 내에서 "컨테이너"로 불리는 격리 가상 영역
  • 확보
  • 어플리케이션과 OS 등의 실행 환경을 함께 컨테이너로 제한
  • ※ 컨테이너는 리눅스 컨테이너, 윈도 컨테이너가 있으며, 본 기사는 리눅스 컨테이너를 대상으로

    Docker 이미지, 컨테이너, 레지스트리 정보


    Docker 이미지, 컨테이너, 레지스트리 요약
    이름:
    설명
    Docker 이미지
    앱 설치와 각종 설정 등 앱 동작에 필요한 정보가 모두 취합된다.
    Docker 컨테이너
    Docker 이미지로 통합된 응용은 실제 실행 상태(과정으로 이동하는 상태)가 되는 것이다.
    Docker 레지스트리
    Docker 이미지의 버전을 관리하는 시스템입니다.클라우드 서비스로Docker Hub와 개인 등록 등이 있다.
    Docker 이미지, 컨테이너, 레지스트리의 관계는 다음과 같습니다.

    Docker의 이점 사용


    나는 여러 가지 좋은 점이 있을 것이라고 생각하지만, 개인적으로는 다음과 같은 세 가지를 열거한다.

    중간부품은 가볍게 시험적으로 사용할 수 있다


    예를 들어 최신 Elasticsearch를 시도하려면 두 개의 Docker 명령을 사용하여 구축할 수 있습니다.

    코드 관리 환경 구축 가능


    Docker에서 Dockerfile 또는 docker-compose.yml 등의 텍스트 파일에 환경 구축 단계를 기록합니다.
    이러한 파일을 참조하여 Docker 명령을 실행하면 프로그램에 따라 환경을 구성할 수 있습니다.
    환경 구축 절차를 인코딩(Infrastructure as Code)함으로써 환경 구축이 다소 수월해질 수 있다는 것이다.

    환경 차이가 발생하기 매우 어렵다.


    한 번에 제작된 환경은 Dockerイメージ로 집계Dockerレジストリ에 등록되었다.
    Docker를 가져온 서버는 Dockerレジストリ에서 Dockerイメージ를 가져와 Dockerコンテナ화하여 같은 환경을 구축하기 쉽다.
    또한 구축된 환경을 변경하고 싶다면(예를 들어 중간부품의 버전 업그레이드 등)
    환경을 직접 처리하는 것이 아니라 다시 만드는 것이다Dockerイメージ.
    이후 이를 DockerイメージDockerコンテナ해 동작 확인을 하고 문제가 없으면 각 환경에 배포한다.
    환경을 직접 수정하지 않고(Immutable Infrastructure) 새로 만들기Dockerイメージ 절차에 따라 환경의 수정 누락을 방지하는 효과가 있다.

    공연하다


    그러면 실제 환경 구축을 진행한다.

    0) 사전 준비


    Docker 설치


    공식 홈페이지를 참고하여 설치DockerDocker Compose.
    이 밖에 본 보도의 환경은 다음과 같다.
    호스트 OS: Ubuntu 18.04.1
  • Docker:18.09.1
  • Docker Compose:1.23.2
  • Docker Hub 계정 만들기

    Dokcerレジストリ Docker Hub을 사용합니다.
    이 페이지에 계정을 만드십시오.

    1) 가장 간단한 방법


    우선 가장 간단한 방법으로 Elasticsearch를 구축한다.docker image pulldocker container run 두 명령만 사용하여 가져올 수 있습니다.
    # Elastic社公式Dockerイメージを取得
    $ docker image pull docker.elastic.co/elasticsearch/elasticsearch:7.0.1
    
    # イメージを確認
    $ docker image ls
    
    # コンテナ化
    $ docker container run -d --name sample-es01 -p 19200:9200 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.0.1
    
    # コンテナ確認
    $ docker container ls
    
    # Elasticsearch確認
    $ curl localhost:19200
    

  • docker image pull 이미지 이름

  • 소스 이미지 이름
  • 옵션
  • 백그라운드에서 - d 용기 가동
  • - name 컨테이너 이름 지정
  • -p 포트 전달
  • -e 환경 변수 설정
  • 2) Docker file 사용 방법


    취득한 Dockerイメージ에 대해 추가 설치나 초기 설정 등 일부 작업을 원할 때Dockerfile에 이 작업 내용을 기재함으로써 작업 자체를 자동화할 수 있다.

    이번에는 CentOS 7에서 Elasticsearch를 가져오려고 합니다.
    우선 아래Dockerfile를 제작한다.
    Dockerfile
    #ベースはCentOS7
    FROM centos:centos7
    
    #必要なソフトウェアをインストール
    RUN yum install -y java wget
    
    #ユーザ「elasticsearch」を追加
    RUN groupadd -g 1000 elasticsearch && \
        adduser -u 1000 -g 1000 -d /usr/share/elasticsearch elasticsearch
    
    USER elasticsearch
    WORKDIR /usr/share/elasticsearch
    
    #Elasticsearch7のダウンロード
    RUN wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.0.1-linux-x86_64.tar.gz \
      && tar zxvf elasticsearch-7.0.1-linux-x86_64.tar.gz
    
    #Elasticsearchの初期設定
    RUN echo -e $"\n\
    network.host: 0.0.0.0\n\
    discovery.type: single-node\n\
    " >> /usr/share/elasticsearch/elasticsearch-7.0.1/config/elasticsearch.yml
    
    #コンテナ起動時にElasticsearchをフォアグラウンドで起動
    CMD ["/usr/share/elasticsearch/elasticsearch-7.0.1/bin/elasticsearch"]
    EXPOSE 9200
    
    Dockerfile를 만든 후 docker iamge build 명령을 사용하여 Dockerイメージ를 만듭니다.
    # docker iamge build -t イメージ名 Dockerfileの格納ディレクトリ
    $ docker image build -t elasticsearch-7.0.1 .
    
    Dockerイメージ의 구축 후 이전과 같이 docker container run 명령Dockerコンテナ화를 사용한다.
    $ docker container run -d --name sample-es02 -p 29200:9200 sample-es02
    
    이렇게 하면 Elasticsearch를 가져올 수 있습니다.
    사용한 엘라스틱서치의 버전을 높이고 싶다면 엘라스틱서치의 설정을 변경하고 싶다면 수정Dockerfile하고 컨테이너를 다시 만들면 된다.

    3) Docker 이미지 공유


    제작Dockerイメージ은 로그인Dockerレジストリ을 통해 다른 환경과 공유할 수 있습니다.

    Docker 이미지 표시

    Docker Hub 자신의 창고에 등록하기 위해 먼저 등록DockerイメージDocker Hub 계정/이미지 이름[:태그 이름]
    형식은 태그로 표시됩니다.
    # 実演2)で作成したイメージ「sample-es02」に対してタグ付け
    $ docker image tag sample-es02 shinyashikis/my-elasticsearch7:0.0.1
    # イメージ確認
    $ docker image ls
    

    로그인 Docker 이미지


    표시 후 로그인Docker Hub, docker image push 명령을 통해 등록Dockerイメージ.
    # Docker Hubにログイン
    $ docker login -u shinyashikis -p xxxxxxxxxxxxxx
    # タグ付けしたイメージをDokcer Hubに登録
    $ docker image push shinyashikis/my-elasticsearch7:0.0.1
    
    이렇게 하면 지정한 docker image pull 명령이나 Dockerfile FROM 문구를 통해 등록된 이미지를 얻을 수 있다.
    $ docker image pull shinyashikis/my-elasticsearch7:0.0.1
    
    Dockerfile
    FROM shinyashikis/my-elasticsearch7:0.0.1
    

    4) Docker Compose 사용 방법


    지금까지 한 개의 컨테이너 제작을 예로 들면 여러 개의 컨테이너의 상황은 어땠을까.
    여러 용기로 구성된 경우 용기 간 통신과 용기의 작동 순서 등을 고려해야 한다.
    이런 상황에서 다중 컨테이너 관리 도구Docker Compose를 사용하면 관리하기 쉽다.

    이번에 브라우저로spring-boot 컨테이너에 접근하면 Elasticsearch 정보만 표시하는 간단한 프로그램을 구축할 수 있다.

    그렇다면 우선 아래 목록을 배치하여 필요한 자재를 구성한다.
    $ tree
    .
    ├── docker-compose.yml                #コンテナの構成を管理するファイル
    └── my-spring-boot                                   
        ├── Dockerfile                    #spring-boot用Dockerfile
        └── sample-es-0.0.1-SNAPSHOT.jar  #spring-bootアプリ
    
    my-spring-boot/Dockerfile
    #ベースはJDK8イメージ
    FROM openjdk:8-jdk-alpine
    
    #アプリをjava-app.jarとしてデプロイ
    COPY ./sample-es-0.0.1-SNAPSHOT.jar java-app.jar
    
    #アプリ実行
    CMD ["java","-jar","/java-app.jar"]
    
    docker-compose.yml
    version: "3"
    services:
      my-spring-boot:
        build: my-spring-boot/       #spring-boot用Dockerfileの格納先を指定
        image: sample-sb04           #イメージ名
        container_name: sample-sb04  #コンテナ名
        ports:
          - 48080:8080
        links:
          - my-elasticsearch         #Elasticserchコンテナへ通信する際のエイリアス
      my-elasticsearch:
        image: shinyashikis/my-elasticsearch7:0.0.1    #実演3)で作成したイメージを指定
        container_name: sample-es04                   #コンテナ名
        ports:
          - 49200:9200
    
    docker-compose.필요한 자재 배치 후 docker-compose up 구축과 용기를 시작하도록 명령합니다.
    $ ls
    docker-compose.yml my-spring-boot
    
    #ビルド実行
    $ docker-compose up -d
    
    #コンテナ確認
    $ docker-compose ps
    
    #ブラウザで確認
    http://localhost:48080/myEsInfo
    
    다음 Elasticserch 정보가 브라우저에 표시되면 OK
    Elasticsearchの情報
    nodeName: 1497813f0e6f
    clusterName: Cluster [elasticsearch]
    

    끝말


    달리기지만 다른 서버에서도 공유할 수 있는 간단한 환경을 구축했다.
    실제로 데이터의 지속성을 고려해 용기가 작동할 때 복잡한 처리를 위해 조개껍질을 실행하는 경우도 이번 사례처럼 쉽지 않은 경우도 있다.
    이런 경우 처음에 소개한 사이트, 공식 사이트, 서적 등을 참고하세요.
    또 라이브 공연에 사용되는 재료는 다음과 같이 보관한다.
  • 퍼포먼스 2) Docker file 사용 방법
  • https://github.com/shinyashikis/docker-sample02
  • Docker Compose 사용 방법
  • https://github.com/shinyashikis/docker-sample04
  • 참고서

  • Docker 실천 입문-Linux 컨테이너 기술의 기초부터 응용까지
  • 실천 컨테이너 개발 입문
  • 좋은 웹페이지 즐겨찾기