1. Docker가 무엇이고, 왜 필요한지 알 수 있다.
2. Docker CLI 명령어를 사용해서 이미지를 생성/수정/배포하고 컨테이너를 생성/삭제할 수 있다.
3. 1개와 2개의 Docker Image를 각각 다룰 수 있다.
- Docker
✔︎ 실행 환경에 구애받지 않고 애플리케이션 실행 가능
✔︎ 의존성 충돌 문제 해결
✔︎ 프로세스
✔︎ 네트워크
✔︎ 파일 시스템
✔︎ 공통점
✔︎ 차이점
✔︎ VM (가상 머신)
✔︎ 도커 (컨테이너 기술)
✔︎ 컨테이너
✔︎ 이미지
✔︎ 레지스트리
Docker Hub
, Amazon ECR
- Docker CLI
✔︎ 레지스트리 (Registry)
Docker Hub
, Private Docker Hub
, 회사 내부용 레지스트리
등으로 나뉨✔︎ 레포지토리 (Repository)
GitHub
의 레포지토리와 유사✔︎ 태그 (Tag)
latest
태그를 붙인 이미지를 가져옴✔︎ 이미지 불러오기
docker image pull [레지스트리]/[레포지토리]:[태그]
✔︎ 이미지 실행 (이미지 → 컨테이너)
docker container run [OPTIONS] IMAGE [COMMAND] [ARG...]
-name
: 컨테이너 이름 할당✔︎ 모든 컨테이너의 리스트 출력
docker container ps -a
✔︎ 컨테이너 삭제
docker container rm 컨테이너_이름
✔︎ image 용량 확인
docker image ls
✔︎ 하나의 이미지를 받아와, 컨테이너로 실행하고, 컨테이너와 관련 리소스를 삭제하는 3가지 방법 한 번에 실행
docker container run --name 컨테이너_이름 --rm [COMMAND] [ARG]
✔︎ it
docker container run -it --rm danielkraic/asciiquarium:latest
- `danielkraic`라는 사람이 올린 이미지 `asciiquarium` 실행
✔︎ -p
docker container run --name 컨테이너_이름 -p 818:80 httpd
- 818 포트 : 로컬호스트 포트
- 80 : 컨테이너 포트
✔︎ -d
✔︎ 로컬 호스트에 있는 파일을 컨테이너에 전달
//src/main/resources/templates
docker container cp ./ 컨테이너_이름:/usr/local/apache2/htdocs/
//src/main/resources/static
docker container cp ./ 컨테이너_이름:/usr/local/apache2/htdocs/
- 현재 폴더의 파일을 뒤 경로에 복사
✔︎ 컨테이너 내부 터미널 접속 방법
docker exec -it 컨테이너_이름 bash
- 컨테이너 내부 터미널 접속 가능
- 컨테이너 오작동 시 원인 찾을 때 사용
✔︎ 구동한 Docker Container를 이미지로 만드는 방법
docker container commit 컨테이너_이름 이미지_이름
docker run --name 컨테이너_이름 -p 900:80 이미지_이름
127.0.0.1:900
또는 localhost:900
으로 웹 서버 정상 작동 여부 확인✔︎ Docker Image 빌드를 위한 파일인 Dockerfile 로 만드는 법
FROM httpd:2.4
COPY {웹 서버 실행에 필요한 파일의 경로 1} /usr/local/apache2/htdocs/ # 띄어쓰기에 유의하여 작성합니다.
COPY {웹 서버 실행에 필요한 파일의 경로 2} /usr/local/apache2/htdocs/
# --tag 는 name:tag 형식으로 이미지를 생성할 수 있습니다.
# 지정한 경로에 있는 Dockerfile을 찾아서 빌드합니다.
docker build --tag my_pacman:2.0 . # "."을 명령어에 꼭 포함해야 합니다!
docker run --name 컨테이너_이름 -p 901:80 이미지_이름
127.0.0.1:901
또는 localhost:901
을 통해 웹 서버 작동 여부 확인
- Docker 이미지 다루기
✔︎ Quiz1
sebcontents/part1:latest
이미지 이용✔︎ Quiz2
docker exe
명령어를 통해 실습 진행컨테이너_이름
부분에는 quiz1 실습 참고docker exe -it 컨테이너_이름 bash
cd /
data
폴더 존재 확인ls
quiz2.txt
파일 존재 확인ls
apt update
apt install nano
exit
명령어를 통해 종료 가능✔︎ docker-compose CLI
docker-compose up
- -d 옵션과 함께 사용하면, 컨테이너를 백그라운드로 실행 가능
docker-compose down
docker-compose up {특정 이미지}
✔︎ Quiz3
docker-compose.yaml
또는 docker-compose.yml
파일 생성 (터미널 위치 무관)docker-compose up -d
명령어를 통해 yaml 파일 실행localhost:8080
또는 127.0.0.1:8080
에서 실행된 화면 실행☞ 정보처리기사를 준비할 때 Docker, 쿠버네티스라는 개념들을 정의로만 알고 있었는데 내가 직접 사용해볼 수 있는 기회였다. 컨테이너 기술은 현업에서도 많이 사용한다고 알고 있었고, 오늘의 학습 경험이 큰 도움이 될 수 있을 것 같다 :) 확실히 코드스테이츠의 커리큘럼 코스가 현업 위주로 잘 짜여져 있는 것 같아 만족!!!
배포 과정이 조금 복잡하게도 느껴질 수 있지만, 내일 자동화를 공부하면서 좀 더 손쉽게 배포할 수 있도록 숙련시켜야겠다 😤
・ 배포 자동화 (Automated Deployment)
・ AWS Pipeline