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を作成するための説明である
ドッキングイメージには、実行コンテナのすべての情報があり、通常数百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)プロジェクトを作成した後、テストコントローラ
基礎/理論
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
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レイヤに保存されるため、複数のコンテナを作成する場合は最小容量のみが使用されます.
@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
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
Reference
この問題について(Docker), 我々は、より多くの情報をここで見つけました https://velog.io/@paxwillman/dockerテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol