안녕하세요, 오늘은 Docker 에 대해 정리해 보았습니다.
💡 내 컴퓨터에서 Application을 만들기 위해서는 운영체제에 여러 소프트웨어를 설치해야 한다. 우리가 만들고있는 Web Application이라면 Web Server, Database 등이 필요하다. 하지만 여러 Software를 설치하는 작업은 아주 까다로운 작업이다.개요


하지만, 위와같은 방법을 채택하면
컴퓨터 3대가 필요하고 그만큼 비용이 증가하게 됩니다.
그럼 어떻게 이 문제를 해결해야 할까요?

하나의 컴퓨터에 가상으로 컴퓨터를 만든다면?
위와같은 방식을 채택하게되면 추가적으로 컴퓨터를 구매하지 않아도 됩니다.
대표적인 예시로 VMware, VirtualBox 가 위와같은 원리로 동작한다.
OS 즉, 운영체제는 아주 거대한데
하나의 DB, 하나의 Web Server를 위해 운영체제 위에 또 운영체제를 설치하니
실행속도 또한 아주 느려지는 현상이 발생한다.
불편함을 참지 못하는 개발자들은 이 문제를 Container로 해결하였다.

한대의 컴퓨터 안에서 각각의 Software를 실행시키는 방식
각각의 Software는 격리된 환경에서 실행된다.
각각의 Container에는 OS 전체가 설치되어 있는것이 아니다.
OS는 이미 HOST에 존재하는 OS를 Container와 서로 공유한다.
우리가 많이 사용하는 Linux OS는 이러한 Software 실행방법이 내장되어 있다.

💡 Docker는 컨테이너 기술을 이용한 소프트웨어 중 압도적인 점유율을 가지고 있다.Docker


예시상황
Docker는 이러한 환경 불일치 문제를 해결해준다.


Docker File을 만들고 여기에 구현하고 싶은 환경을 설정
만들어진 Docker File을 서버와 개발자 모두에게 준다.


즉, 설정한 환경과 같은 Virtual Container(가상 컨테이너, 예시는 Ubuntu)를 만든다.
최종적으로 개발자가 서버에 DockerFile과 함께 코드를 업로드하면 두 환경 모두에서 잘 작동된다.
컨테이너는 각각 독립적으로 존재하고 동작한다.


💡 Docker를 실제 사용하는 사례와 함께 어떻게 써야하는지 더 자세히 알아보자.Docker 사용
소프트웨어 설치 기사에게 사장님이 A회사에 가서 설치해! 라는 일을 준다.

오랜 시간동안 시스템을 구축하기 위해 다양한 부품(DB, JAVA 등등..)들을 사용하여 구축을 완료했다.
완전히 같은 시스템 구축을 B 회사에도 되도록 요청한다.

너무나 비효율적이다!
Server를 운영하기위해 환경을 구축하는것은 아주 복잡한 일이다.
실제로 서버를 운영해보면 더 좋은 서버로 옮겨가는 경우가 발생한다.
증가한 트래픽에 따라 서버를 확장시키는 경우도 발생한다.
이때마다 처음부터 새로 서버를 구축한다면..?
같은 서버에 여러 서비스를 운영하는 경우
바로 이런 상황들에서 Docker는 깔끔하게 문제들을 해결해준다.
Docker Image, Docker Hub

부품들이 설치된 그 상태로 문서처럼 사본(Docker Image)으로 저장한다.
한번 저장된 사본(Docker Image)들은 언제든지 재사용할 수 있다.

만들어진 사본을 그대로 다른곳에 설치할 수 있다.


application.yml 과 같은 설정 파일을 공유한다.Docker: Accelerated Container Application Development
오늘의 코드카타
class Solution {
public String solution(String my_string, String alp) {
String answer = my_string.replace(alp, alp.toUpperCase());
return answer;
}
}
public class Main {
public static void main(String[] args) {
Solution solution = new Solution();
System.out.println(solution.solution("programmers","p"));
System.out.println(solution.solution("lowercase","x"));
}
}
특정한 문자를 대문자로 바꾸기