Appearance
Docker Fundamentals and Commands
명령어
- docker images
- docker ps
- -a → 죽은 컨테이너 목록 조회
- docker pull
- docker run
- —rm → 컨테이너 종료시점에 컨테이너 삭제해주는 명령어
- -d → 백그라운드에서 컨테이너 실행
- -i → 포그라운드에서 컨테이너 실행
- -p → 포트포워딩을 지정하는 옵션
- —name → 컨테이너에 네이밍
- -e → 환경변수 설정
- —link → 참조할 다른 컨테이너 지정
- —volume → 로컬 디렉토리의 특정 경로를 컨테이너 내부로 마운트
- docker attach
- docker stop
- docker rm
- docker rmi
- ⚠ 이미지를 지우기 위해서는 이미지에서 파생된 컨텐이너가 없어야함. (종료 상태 포함)
- docker diff
- docker commit
- docker build
- docker info
- docker login
- docker tag
- docker push
도커를 쓰는 이유
서버 환경에 구애받지 않고 특정 애플리케이션을 실행할 수 있는 환경 제공
- 서버 환경이 동일하지 않든 서버의 환경이 변화하든 상관이 없습니다.
- 로컬에 뭐 설치해서 확인하고 할 필요 없습니다. (빠르게 개발 환경 구축)
개발/실 서버환경 구성에 대한 문서 업데이트 최소화
이미지
- 어떤 환경이 구성되어있는 상태를 저장해놓은 파일 집합
컨테이너
- 이 이미지의 환경 위에서 특정한 프로세스를 격리시켜 실행한 것 (⚠ 가상머신 ❌, 프로세스 ⭕)
도커 컨테이너 생명주기
- 생성
- 시작
- 실행
- 중지
- 삭제
계층화된 파일 시스템 사용
- 읽기 전용인 read only 레이어와, 새로 변경되거나 추가된 내용을 담은 새로운 레이어로 구성
- 부연설명 : 기존레이어는 내버려둔 상태에서 컨테이너가 실행되면서 변경되는 사항들은 그 위 레이어에 기록하는 느낌임
Docker hub
- trusy version (official)
- /library → 도커 공식 이미지를 제공하는 네임스페이스
[Docker hub]
- docker login 이후 docker tag 사용해 이미지의 이름 변경
bash
docker tag nacyot/moniwiki:latest <DOCKER_HUB_ID>/moniwiki:latest
- docker push 이용해서 docker hub에 등록
bash
docker push <DOCKER_HUB_ID>/moniwiki:latest
도커 이미지를 추가하는 방법
- docker pull → 미리 만들어져 있는 이미지를 가져오는 방법
- docker commit → 컨테이너의 변경사항으로부터 이미지를 만드는 방법
- Dockerfile build
Dockerfile 작성에 필요한 명령어
- FROM → 어떤 이미지로부터 이미지를 생성할지
- RUN → 명령어 실행
- && → 여러 명령어 이어서 실행하는 연산자
- \ → 하나의 명령어 여러줄에 작성하기 위한 연산자
- WORK DIR → 이후에 실행되는 모든 작업의 실행 디렉터리 변경
- ENV → 환경변수 기본값 지정 (도커에서는 환경변수로 애플리케이션의 동작을 제어하는 것을 권장)
- EXPOSE → 컨테이너가 외부와 통신하기 위해 사용할 네트워크 포트
- CMD → 컨테이너 시작 시 실행되는 기본 명령어
- COPY
- ADD
Dockerfile 은 개발용과 배포용 구분하는게 용이
- Dockerfile-dev (개발용) / Dockerfile-real (배포용)
참고문헌
: https://www.44bits.io/ko/post/why-should-i-use-docker-container
: https://subicura.com/2017/01/19/docker-guide-for-beginners-1.html