개발세발
Docker(도커) 본문
도커(Docker)
: 어플리케이션을 패키징 할 수 있는 툴
container vs vm
vm
하드웨어 infrastructure 위에 'vmware'나 'VirtualBox'와 같은 Hypervisor 소프트웨어를 이용해 각각의 가상머신을 만들 수 있음.
한 운영체제 위에서 동일한 어플리케이션을 각각의 고립된 다른 환경에서 구동하기 위해서는 vm을 활용하여 구동해야했음
vm은 각각의 운영체제를 포함하고 있으므로 맥OS위에서 vm을 이용하면 windows와 Linux를 동시에 구동할 수 있음
: 무거운 운영체제를 포함함. 시작하는데도 오래걸리고, infrastructure의 리소스를 많이 잡아먹음
container
vm의 경량화된 컨셉이 'container'
container는 하드웨어에 설치된 운영체제인 Host OS 에서 container Engine이라는 소프트웨어를 설치하면 개별적인 container를 만들어서 각각의 어플리케이션을 고립된 환경에서 사용할 수 있게 해줌.
-> 운영체제를 포함하지 않고 container Engine이 설치된 Host OS를 공유함
container Engine 중 가장 많이 사용되는 것이 'Docker' 이다.
즉, 도커는 OS단까지 내려가는 것이 아니라 실행환경만 독립적으로 돌리는 것.
VM보다 훨씬 가볍고 빠르게
container
1) 만들고 2)배포하고 3) 구동한다
Dockerfile을 만들고 이를 이용해 Image를 만들어서 Container를 구동할 수 있다.
ㆍDockerfile
: container를 어떻게 만들어야 되는지 . 설명서
ㆍCopy files
: 어플리케이션을 구동하기 위해 꼭 필요한 파일이 무엇인지
ㆍInstall dependencies
어떤 프레임워크나 라이브러리 설치가 필요한지 (외부 dependency)
ㆍSet environment variables
필요한 환경변수
ㆍRun setup scripts
어떻게 구동해야 하는지
Image
dockerfile 을 이욯하여 만듦.
application을 실행하는데 필요한 코드, 런타임환경, 시스템 툴, 시스템 라이브러리를 비롯한 모든 세팅사항이 포함되어 있음
: 무한생산 가능한 컨테이너 조립키트
→ 실행되고 있는 어플리케이션의 상태를 한 눈에 볼 수 있는 이미지화
→ 변경이 불가능함
container
container안에서 어플리케이션이 동작한다.
image를 이욯하여 어플리케이션 구동
container에서 각각 동작하는 어플리케이션은 개별적으로 수정이 가능한 상태. 각각의 container에서 수정된 파일이 있더라도 image에는 영향을 미치지 않는다. (ex) Image는 class, container는 instance)
Shipping containers
: container 배포 (=image 공유)
◎ Public
- dockerhub (가장 많이 사용)
Docker Hub Container Image Library | App Containerization
We and third parties use cookies or similar technologies ("Cookies") as described below to collect and process personal data, such as your IP address or browser information. You can learn more about how this site uses Cookies by reading our privacy policy
hub.docker.com
- RED HAT Quay.io
레드햇 | 클라우드 서비스 & 글로벌 오픈소스 솔루션 리더
레드햇은 오픈소스 솔루션의 리더로서, 오픈 하이브리드 클라우드 환경을 지원하는 가상화, 스토리지, Linux, 미들웨어 및 컨설팅 서비스를 제공합니다. 아울러 전 세계 파트너 에코 시스템을 통
www.redhat.com
- GitHub Packages
https://github.com/features/packages
GitHub Packages: Your packages, at home with their code
With GitHub Packages you can safely publish and consume packages within your organization or with the entire world.
github.com
◎ Private
- aws
https://aws.amazon.com/ko/?nc2=h_lg
클라우드 서비스 | 클라우드 컴퓨팅 솔루션| Amazon Web Services
개발자, 데이터 사이언티스트, 솔루션스 아키텍트 또는 AWS에서 구축하는 방법을 배우는 데 관심이 있는 모든 사용자용 무료 온라인 교육 AWS 전문가가 구축한 500개 이상의 무료 디지털 교육 과정
aws.amazon.com
- Google Cloud
클라우드 컴퓨팅 서비스 | Google Cloud
데이터 관리, 하이브리드 및 멀티 클라우드, AI와 머신러닝 등 Google의 클라우드 컴퓨팅 서비스로 비즈니스 당면 과제를 해결하세요.
cloud.google.com
- Microsoft Azure
https://azure.microsoft.com/ko-kr/
클라우드 컴퓨팅 서비스 | Microsoft Azure
Microsoft Azure의 유연한 개방형 클라우드 컴퓨팅 플랫폼을 통해 목적에 따라 투자하고 비용을 절감하며 조직을 더 효율적으로 만드세요.
azure.microsoft.com
1. Local Machine 에 Docker설치 후 Dockerfile을 작성한 후 image로 build
2. Container Registry 에 image를 Push
3. Container Registry에서 Docker가 설치된 Server로 Pull
4. Server에서 Run
docker 설치
https://docs.docker.com/develop/develop-images/dockerfile_best-practices/
Best practices for writing Dockerfiles
docs.docker.com
도커 레퍼런스
https://docs.docker.com/engine/reference/builder/
Dockerfile reference
docs.docker.com
Dockerfile Best Practices
https://docs.docker.com/develop/develop-images/dockerfile_best-practices/
Best practices for writing Dockerfiles
docs.docker.com
에러
An error, "failed to solve with frontend dockerfile.v0"
https://stackoverflow.com/questions/64221861/an-error-failed-to-solve-with-frontend-dockerfile-v0
An error, "failed to solve with frontend dockerfile.v0"
I was trying to build my Docker image for my Gatsby application. Whenever I run the command docker build . -t gatsbyapp, it gives me an error: failed to solve with frontend dockerfile.v0: failed to...
stackoverflow.com
찾아보니 그냥 buildkit 을 끄라는 내용이 좀 중복적으로 많아서 따라서 실행했따.
docker tesktop 에서 "buildkit" : true 로 되어있던걸 false로 변경해줬다.
Error response from daemon: dockerfile parse error line 12: unknown instruction: "NODE",
image 만드는 과정에서 자꾸 에러가 남
온갖 방법으로 다 해봤는데 없어서 혹시나 싶어서 구문 변경했더니 정상작동한다.
위와 같이 써놨을 때
Error response from daemon: dockerfile parse error line 12: unknown instruction: "NODE",
에러가 뜬다 . 선명하게 빨간밑줄이 생겼음에도 눈치를 못챘따 ..
이렇게 한줄로 작성해주면 빨간 밑줄도 사라지고 드!디!어 정상작동 된다 ... 진짜 이 사소한걸로 몇시간을 날린건지.... ㅠㅠㅠㅠㅠ
요렇게 드디어 만들어졌따.. 울뻔,..
https://github.com/yuuulya/self-taught/tree/main/Docker
GitHub - yuuulya/self-taught
Contribute to yuuulya/self-taught development by creating an account on GitHub.
github.com
(*) 참고자료
드림코딩 :도커 한방에 정리 🐳 (모든 개발자들이 배워보고 싶어 하는 툴!) + 실습
https://www.youtube.com/watch?v=LXJhA3VWXFA
얄팍한 코딩 사전 : 도커가 뭐고 왜 쓰는건가요?
https://www.youtube.com/watch?v=tPjpcsgxgWc
'코딩공부 > 참고자료' 카테고리의 다른 글
CI/CD (지속적인 통합/지속적인 제공[배포] (0) | 2022.07.14 |
---|---|
windows10 wsl2 설치 (0) | 2022.07.14 |
개발 공부 영어 단어장 (update 22.11.18) (0) | 2022.07.12 |
Uncaught SyntaxError: Unexpected reserved word (at i .....) 해결 (0) | 2022.07.09 |
VS Code 자동완성 단축키 만들기 (feat. console.log) (0) | 2022.07.08 |