docker 매뉴얼
기존 서비스의 문제
1. 서버 환경과 개발 환경이 다를 때 배포의 문제
ex) 서비스 1에는 python 3.1 버전, 서비스 2 에는 python 3.8 버전에서만 돌아가는 코드
-> 매우 혼란스러움.
3. 가상환경을 다시 세팅하여 컴퓨팅할 수 있으나, 컴퓨터 자원을 나누어 할당하므로 성능이 떨어지게 됨 -> 그다지 좋은 방법은 아님
핵심개념
- 가상 머신처럼 독립된 실행환경을 만들어주는 것
- 운영체제를 설치하 것과 유사한 효과를 낼 수 있지만, 실제 운영체제를 설치하지 않기 때문에 설치 용량이 적고 실행 속도 또한 빠름
- 언급 실행환경을 컨테이너라고 함.
컨테이너?
- 개별 Software의 실행에 필요한 실행환경을 독립적으로 운용할 수 있도록 기반환경 또는 다른 실행환경과의 간섭을 막고 실행의 독립성을 확보해주는 운영체계 수준의 격리 기술
시작하기
1. clone a repository
- IDE 환경, 또는 Docker for windows에서
- The Getting Started project is a simple GitHub repository which contains everything you need to build an image and run it as a container.
(컨테이너를 run 하고 그곳에서 git clone)
![](https://velog.velcdn.com/images%2Fcrosstar1228%2Fpost%2Fe213d83a-5c5e-4fb9-9609-9b4633cc095d%2Fimage.png)
2. Build image
docker build -
![](https://velog.velcdn.com/images%2Fcrosstar1228%2Fpost%2Fc1699b0d-937b-413b-8cb6-dd9b6d41776c%2Fimage.png)
3. Run Container
![](https://velog.velcdn.com/images%2Fcrosstar1228%2Fpost%2F42896db9-0e18-4b72-84d4-0e3940901ab3%2Fimage.png)
-d : background에서 컨테이너 run 하고
-p : 다음 포트 주소로 배포(80:80)
4. Save and share image
![](https://velog.velcdn.com/images%2Fcrosstar1228%2Fpost%2F94263cfb-f3e1-425e-a36e-962e570bbd52%2Fimage.png)
-
Docker hub 에 이미지 업로드(저장 및 공유)
-
다른 사람들은 Open source로 다운받아서 바로 이용 가능
-docker tag: target image 를 source image로부터 생성
-docker push : docker hub로 push(git의 push와 매우 유사)
-
-it: 가상 TTY를 열도록 지정합니다.stdin 이렇게 하면 컨테이너에서 실행되는 동안 aws configure 및 aws help 명령을 사용하여 AWS CLI 버전 2에 입력을 제공할 수 있습니다. 스크립트를 실행하는 경우 -it가 필요하지 않습니다.
결과
도커헙 레포에 아래와 같이 생성 완료.
![](https://velog.velcdn.com/images%2Fcrosstar1228%2Fpost%2F54201c36-f396-4d59-a941-c0b1df76b3be%2Fimage.png)
image
- container 안에서 사용을 위한 private한 파일 시스템
- 리눅스 컴퓨터의 특정 상태를 캡쳐해서 박제해 놓은 것
ex) 리눅스에서 node.js가 설치된 상태를 그대로 냉동해서 박제해 놓은 것