-
Docker Macbook으로 시작하기, 이미지 다운로드 터미널 명령어CS/네트워크 2023. 7. 8. 14:24
update 2023년 7월 25일 - 도커 기본 상식에서 자세한 상식으로

도커 로고..제법 귀엽다! 당신이 이 글을 통해 얻을 수 있는 정보
도커란
Docker는 컨테이너 기술을 사용하여 어플리케이션에 필요한 환경을 구축하고, 격리된 공간에서 프로세스가 동작하게 함.
Virtual Machine 처럼 사용자의 로컬 환경과 독립된 새로운 환경을 만들어주는 도구.
Docker
1. 도커란
도커 : 컨테이너 기반 오픈소스 가상화 플랫폼
등장 : 2013년 3월 Python conference 에서 CTO Solomon 이 The future of Linux Containers 라는 세션으로 처음 세상에 알려짐.
2. 컨테이너?
실제 컨테이너 특징 : 동일한 규격 상자, 크래인 통해 옮기고, 쌓을 수 있음, 내부의 물건이 다른 컨테이너로부터 보호됨.
도커 컨테이너 특징
- 어떤 환경이 담겨있든 하나의 명령체계로 설치할 수 있음.
- 도커 허브를 통해 쉽게 배포, 다운
- 컨테이너 내부 자원들이 다른 컨테이너로부터 보호
컨테이너가 없다면 : 웹서버, User DB, Web Front, Queue, Analytics DB 등등 직접 설치해야됨 ⇒ 컨테이너로 한번에
하나의 운영 환경에서 여러개 컨테이너 동시 운용 가능
기존 OS 가상화 방식 : 하이퍼바이저(하나의 물리적 서버에서 여러 개의 가상 머신을 동시에 실행시키는 소프트웨어) 기반 = Guest OS 필요 = 오버헤드
KVM, 반가상화 기술을 통해 성능 향상 but 느림
컨테이너 방식 : 단순 프로세스 격리 = 성능 손실 거의 없음
3. 왜 도커인가
리눅스, free bsd, solaris 등 기술 있었음. docker도 Linux 기반으로 시작 ⇒ 개인화 ⇒ 사용성 좋아짐
레이어 저장방식 : 의존관계 이용, 각 용량 최소화
이미지 경로 표현 : 손쉬운 이미지 공유 (간단하고 직관적인 명령어)
Dockerfile : DSL 언어 이미지 생성 과정 명시, 간결
Docker HUB
Command API
훌륭한 생태계 및 커뮤니티
지속적인 성능/기능 업데이트
cf)
이미지 = 실행에 필요한 파일, 설정값 등을 포함하는 덩어리, 컨테이너 = 프로세스
ECR (아마존 컨테이너 같은거)
4. 도커를 설치하자
Linux docker 설치
curl -fsSL https://get.docker.com/ |sudo sh
- sudo 남용 금지. 도커는 많이 써서
도커 GUI 도구 : Kitematic - 쉽게 클릭만으로, 도커 허브와 연동
Docker quick start - 도커 클라이언트는 네이티브에, 도커 서버는 가상머신 안에서 실행 주의
버전 정보 : docker version OR docker -v
도커 이미지 검색 : docker search 검색할 이미지, docker search ubuntu
도커 이미지 다운로드 :
docker pull 이미지이름:태그 (ex. docker pull ubuntu:latest)
docker [이미지 이름] images
도커 이미지 컨테이너 실행
docker run —name ubuntu -d -it ubuntu:latest /bin/bash
[-d] : detached mode (백그라운드 모드) [-p] : 외부포트와 컨테이너의 포트를 연결 (포워딩) (-p 외부포트 : 컨테이너 포트) [-rm] : 프로세스 종료시 컨테이너 자동 제거 [--link] : 컨테이너 연결 [컨테이너명:별칭]
[-v] : 호스트와 컨테이너의 디렉토리를 연결 (마운트) [-e] : 컨테이너 내에서 사용할 환경변수 설정 [-it] : -i–t를 동시에 사용한 것, 터미널 입력을 위한 옵션 [--name] : 컨테이너 이름 설정
컨테이너 명령어 보기 :
docker ps -a (종료된 컨테이너도 보여줌)
컨테이너 중지 : docker stop ~~
컨테이너 완전히 제거 : docker rm ~~
컨테이너 이미지 완전 삭제 : docker rmi ~~
로그 화면 캡쳐 : docker logs 컨테이너 이름 --tail 10 마지막 10줄만
명령어 내리기 docker exec -it ubuntu /bin/bash
- run : 새로운 컨테이너 만들어서 실행, exec : 실행중인 컨테이너에 명령 내림
docker commit -a 제작자 서명 -m 커밋 메시지
이미지 만들고 배포
도커 파일 : 이미지 생성을 위한 일종의 배치 파일, 특정 이미지 기준으로, 이미지 구성에 필요한 명령어들을 저장해놓은 파일, 자체 DSL 언어를 이용하여 이미지 생성 과정 명시
배포 기본 : React기반 Node.js 사용 추천
npm install -g create-react-app
create-react-app hello-react
6. 도커 네트워크
컨테이너 네트워크
docker tool box 사용시 : linux 가상환경 위에서 동작, 도커 내부 host 포트 포워딩의 과정을 거쳐도 그 대상은 linux 임
NAT 방식 : 네트워크 어댑터 1 포트 포워딩 지원, 외부통신 가능하게
설치 방법
1. 설치 파일 다운로드
https://www.docker.com/products/docker-desktop/ 에 접속하여 다운로드
- 이렇게 쉬울리가 없지!
Issue1. 용량도 크고 무슨 서버를 쓰는지 다운로드 하기까지 좀 많이 걸림.. 특히 와이파이가 안좋은 환경이라 다운로드 오류가 난다면 서드 파티 홈페이지에서 다운 받아도 된다.. (경험담) 나는 일단 문제가 없었지만 수상한 다운로드 홈페이지도 많으니 되도록이면 공식 홈페이지에서 받자!
Issue2. 홈페이지가 리뉴얼 됐는지 내가 실습 과제를 수행했던 약 2개월 전에는 https://docs.docker.com/ 이 링크에서 MAC/Windows/Linux를 선택했어야 됐는데 지금은 자동으로 인식하여 intel chip으로 설정되어 있다.
2. Drag and Drop
dmg 파일을 드래그 해서 Applicaitons 폴더 아이콘 위에 Drop 한다!
계륵 맥북,, 1년 썼는데도 친해지기가 힘들다.

3. 진짜 (?) 설치
특이하게 건들 건 없고 그냥 라이센스 동의 Accept 를 누르면 된다.
그럼 런치패드에 이렇게 귀여운 아이콘이 생기며 실행할 수 있다.

도커를 실행하면 윈도우와는 묘하게 느낌이 다른, 동글동글 귀엽고 깔끔한 인터페이스를 볼 수 있다.
그래도 나는 그램이 그립다.. 도서관에서 펼치면 모두가 팬 소리에 쳐다봤지만 그래도 윈도우가 좋다.( -̥̥᷄ _ -̥̥᷅ ) 맥북은 항상 험난하다..
도커 이미지 다운로드
Docker에서 서비스 운영에 필요한 서버 프로그램, 소스코드 및 라이브러리 등을 묶어서 하나의 템플릿 형태로 만들어 두는 것을 Docker Image라고 한다.
1. terminal.app 을 실행한다.
2. docker image 다운받는 방법
docker run을 입력! (docker를 런치패드에서 아이콘을 클릭하여 직접 실행해도 됨)docker images를 입력해서 이미지 있는지 슬쩍 확인 (만약 처음이라면 아무것도 안 뜸)docker pull 다운받을컨테이너명docker images를 다시 입력해서 잘 다운 받아졌는지 확인
잘 다운 받아졌다면 이렇게 Repository, Image ID 등 정보를 확인할 수 있음!
블로그 운영하는 사람들 대단.,, 설치하고 다운로드만 썼는데도 힘들다.
나는 조교님이 만들어놓으신 이미지를 다운로드하여 이미지를 기반으로 컨테이너를 생성하고, 컨테이너에서 내 환경에 맞추어 소스코드를 수정하여 소켓 프로그래밍 파일을 완성하는 것이 과제였다. 그렇다. 이 모든 과정을 기록하려면 갈 길이 멀다!
나를 밤새게 했던 도커 컨테이너 이름 설정 terminal 명령어에 대해서는 다음에 정리하는 걸로....