Docker

5420 ワード

参考資料
https://velog.io/@devdynam0507/Docker%EB%A1%9C-%ED%8C%80%EC%9B%90%EB%93%A4%EC%97%90%EA%B2%8C-%EA%B3%B5%ED%86%B5%EB%90%9C-%EB%B0%B1%EC%97%94%EB%93%9C-%EA%B0%9C%EB%B0%9C%ED%99%98%EA%B2%BD-%EC%A0%9C%EA%B3%B5%ED%95%B4%EC%A3%BC%EA%B8%B0

  • ドッキングコンセプト

    ドックって何?


    ◆複数のアプリケーションを迅速に構築、テスト、導入するソフトウェアプラットフォーム.すべてのハードウェアリソースを仮想化する必要がなく、プロセスを分離するだけで環境を迅速に構築できます.
    ◇サービス環境が整ったら、それをDocker Imageにして配置し、簡単にコンテナとして実行できる.

    コンテナ。


    ◆個別のソフトウェアを個別に実行するために必要な実行環境を独立して実行するために、基礎環境または他の実行環境との干渉を防止する. 独立性を確保するオペレーティングシステム・レベルの分離テクノロジー
    ◆簡単に言えば、複数のソフトウェアなどを同じ仕様で組み合わせて、実際のユーザーができるだけ気を使わないようにすることです
    イメージ運転の形態

    イメージ。


    ◆コンテナの実行に必要なファイルや設定値など(ソフトウェアドライバに必要な依存や詳細を含む).
    コンテナはイメージによって作成され、実行されます!
    例えば、
    Docker Image->タイプライター
    Container->板を使った本
    つまり、Dockerfileはイメージを作成するための説明であり、イメージはContenterを作成するための説明である

  • Docker Layer


    ドッキングイメージには、実行コンテナのすべての情報があり、通常数百MBの容量があります.
    そのため、導入するたびにイメージを追加するのは非常に効率的ではありません.
    この問題を解決するコンセプトはDocker Layer!!
    Docker Layerのコンセプトは、既存のイメージが他のファイルを必要とする場合に再ダウンロードするのではなく、ファイルを追加することです.

    図では、Dockerイメージの各レイヤは読み取り専用レイヤで構成されており、ファイルを追加すると新しいレイヤが作成されます.
    その後、Dockerは複数のレイヤを組み合わせて、ファイルシステムとして使用できるようにします.
    だから、ImageもLayerも同じ意味!
    上図を次のように分割します.
    第1層:A+Layer B+Layer Cとする
    次:メインイメージ+nginx
    3つ目:セカンダリイメージ+ソース(バージョン1)
    ===3回目にsource(v 1)レイヤを変更した場合、サブレイヤを除いて、新しく変更したsource(v 2)をダウンロードするだけです!==
    最終:3番目のイメージにコンテンツを作成するときに、R/Wレイヤ(Read/Write)を追加します.実行中に作成されたファイルまたは変更はR/Wレイヤに保存されるため、複数のコンテナを作成する場合は最小容量のみが使用されます.
  • 基本ドッキング配備プロセス1)プロジェクトを作成した後、テストコントローラ
    @RestController
    public static classHelloController{
    @RequestMapping("/hello")
       publicStringhello() {
          return "hello docker world";
       }
    }
    2を作成)プロジェクトを右クリック→New→File→Dockerfile(名前が重要)
  • ```
    FROM openjdk:8-jdk-alpine
    ARG JAR_FILE=build/libs/*.jar
    COPY ${JAR_FILE} app.jar
    ENTRYPOINT ["java","-jar","/app.jar"]
    ```
    
    위 코드 작성
    
    **FROM  키워드**
    
    Docker에게 주어진 이미지를(태그 포함) 빌드 시 기반으로 사용하도록 지시합니다.
    
    **ARG 키워드**
    
    빌드 시 사용할 환경 변수를 선언, Spring Jar 파일이 생성되는 위치를 변수로 선언해서 거기 있는 파일을 대상으로 하겠다는 의미 
    
    **COPY 키워드**
    
    ARG 키워드에서 변수로 선언한 JAR_FILE을 app.jar 이름으로 복사한다는 의미,
    
    **ENTRYPOINT  키워드**
    
    이미지를 Container로 띄울 때 Jar 파일이 실행되어 Spring 서버가 구동되도록 Command를 설정
    
    3) 회원가입 후 Create Repository를 클릭하여 Repository를 생성 
      
    4) Dockerfile 빌드
    
    형식 : docker build --build-arg DEPENDENCY=build/dependency -t 도커허브아이디/도커허브 Repository 명 .
    
        docker build --build-arg DEPENDENCY=build/dependency -t tjsrua02/simple-spring-boot .             (마지막 . 까지 써줘야 됨)
    
    ⇒ 도커파일 빌드 및 이미지 생성 
    
    단, 인텔리제이 터미널 창에서 해야되나 봄 git bash에서는 안 먹힘
    
    =======================================
    
    여기까지 인텔리제이 및 Docker 에서의 작업
    
    =======================================
    
    5) Docker 를 ec2 서버에 설치 
    
    $ **sudo yum install docker**
    
    - 위 명령어를 통해 도커를 설치해주시고 중간에 y를 눌러줍니다.
    
    아래 오류뜨면
    sudo: yum: command not found
    
    해결
    1.sudo apt-get install yum
    or
    2. sudo apt-get install docker
    저는 1 방법으로 해결이 안 돼서 2번으로 해결 !
    
    $ **sudo systemctl start docker**
    
    - 위 명령어를 통해 도커를 실행시킵니다.
    
    Failed to start docker.service: Unit docker.service not found. 에러가 뜨면 
    
    curl -sSL [https://get.docker.com/](https://get.docker.com/) | sh 입력으로 해결 !
    
    $ **sudo docker pull tjsrua02/simple-spring-boot**
    
    - 위 명령어를 통해 도커허브에 올라간 스프링부트 도커 이미지를 pull 받습니다.
    
    $ **sudo sudo docker run -p 8081:8080 tjsrua02/simple-spring-boot**
    
    - 해당 명령어로 8081번 포트에 스프링부트를 실행합니다.
    <参考資料>
  • 基礎/理論
    https://www.notion.so/Doker-b540cc61b3d24d3abf732f370a1be9c2#15fba9bda35f4dbca0a6e34d84b796de
    https://www.notion.so/Doker-b540cc61b3d24d3abf732f370a1be9c2#8244b13862c245ac8206c55020f98475
  • -Dockerのインストールと簡単な使用
    https://www.notion.so/Doker-b540cc61b3d24d3abf732f370a1be9c2#7f8e4ea5fbe1486b9df68a88fc636b7c
    https://www.notion.so/Doker-b540cc61b3d24d3abf732f370a1be9c2#a7400b46f87d4b7fb0648a25c285316e
    -Dockerイメージの作成方法/Docker-合成
    https://www.notion.so/Doker-b540cc61b3d24d3abf732f370a1be9c2#fa5712ab94f143ff82d4de2460048b64
    https://www.notion.so/Doker-b540cc61b3d24d3abf732f370a1be9c2#98a3f058cfbb4119b16d61e55a3f3df8