2020-10-18

Posted by karais89 on October 18, 2020

인프런에서 결제한 도커 강의 학습 및 내용 정리 진행. 이전에 도커에 대해 몇개의 강의 및 책을 학습한 적은 있어 대략적인 방식만 알고 있는 상태에서, 실제 개발에 적용 가능한지 확인을 위해 학습 중.

레디스를 이용한 컨테이너 이해

레디스를 도커 환경에서 실행

  • 레디스 서버가 먼저 작동 → 레디스 클라이언트 실행 후 명령어를 레디스 서버에 전달
1
2
3
4
5
docker run redis
docker ps # 아이디 획득
docker exec -it <컨테이너 아이디> redis-cli
set key1 hello
get key1
  • 레디스가 실행된 컨테이너 안에서 redis-cli 실행한다.
  • it = it를 붙여줘야 명령어를 실행 한 후 계속 명령어를 적을 수 있다.
    • i = interactive
    • t = terminal

실행 중인 컨테이너에서 터미널 생활 즐기기

1
docker exec -it <컨테이너 아이디> <명령어>
  • 위와 같이 명령어 하나 입력해야 할 때마다 위의 모든 것을 입력해줬어야 함. (귀찮음)
  • 컨테이너 안에 쉘이나 터미널 환경을 접속해서 위 문제를 해결.
1
docker exec -it <컨테이너 아이디> sh
1
2
3
4
5
6
7
docker run alpine ping localhost
docker ps # id 획득
docker exec -it <컨테이너 아이디> sh

# 쉘 환경 접속
ls
touch new-file
  • 쉘 환경에서 빠져나갈때는 ctrl + D

섹션 3. 직접 도커 이미지를 만들어 보기

도커 이미지 생성하는 순서

현재 까지는 도커 허브에 있는 이미지를 사용.

도커 이미지를 만들어서 사용 가능. 해당 이미지를 도커 허브에 공유 가능

도커 이미지 생성 순서

  1. Dockerfile 작성
    • 도커 이미지를 만들기 위한 설정 파일. 컨테이너의 행동 설정 정의
  2. 도커 클라이언트
  3. 도커 서버
  4. 이미지 생성

Dockerfile 만들기

도커 파일이란

도커 이미지를 만들기 위한 설정 파일, 컨테이너가 어떻게 행동해야 되는지에 대한 설정 정의

도커 파일 만드는 순서 (도커 이미지가 필요한 것이 무엇인지 생각)

  1. 베이스 이미지 명시 (파일 스냅샷에 해당)
  2. 추가적으로 필요한 파일을 다운 받기 위한 몇가지 명령어를 명시 (파일 스냅샷에 추가)
  3. 컨테이너 시작시 실행 될 명령어를 명시해준다. (시작시 실행 될 명령어에 해당)

베이스 이미지란?

도커 이미지는 여러개의 레이어로 되어 있다.

그 중에 베이스 이미지는 이 이미지의 기반이 되는 부분이다.

레이어는 중간 단계의 이미지라고 생각하면 된다.

OS라고 생각하면 된다 (Window, MacOS, Linux 등등)

실제 생성

  • 목표는 hello 문구 출력

순서

  1. 도커 파일을 만들 폴더 하나 만들기 ex) dockerfile-folder
  2. 원하는 에디터로 해당 폴더 접근
  3. 파일 생성 이름은 Dockerfile 생성
  4. 기본 뼈대 생성

Docker 파일 형태

1
2
3
4
5
6
7
8
# 베이스 이미지 명시
FROM baseImage

# 추가적으로 필요한 파일을 다운로드
RUN command

# 컨테이너 시작시 실행될 명령어 명시
CMD ["executable"]
  1. 실제 값 추가

실제값

1
2
3
4
5
6
7
8
# 베이스 이미지 명시
FROM alpine

# 추가적으로 필요한 파일을 다운로드
# RUN command

# 컨테이너 시작시 실행될 명령어 명시
CMD ["echo", "hello"]
  • 이미지 사이즈가 가장 작은 alpine 다운
  • 추가 파일은 다운로드 필요없어 주석 처리
  • echo “hello” 출력

도커 파일로 도커 이미지 만들기

1
docker build ./
  • dockerfile이 있는 디렉터리로 이동후 명령어 입력
  • dockerfile 이라는 파일을 찾아서 도커 클라이언트에 전달시켜준다.

내가 만든 이미지 기억하기 쉬운 이름 주기

1
dcker run -it <이미지 아이디>
  • 저희가 만든건 해쉬 값을 넣어줘야 함. (기억하기 힘듬)
1
docker build -t <이미지 이름> ./
  • 이미지 이름 형태
    • 나의 도커 아이디/(저장소 or 프로젝트이름):버전
1
2
docker build -t karais89/hello:latest ./
docker run -it karais89/hello

만든 도커 이미지 확인

1
docker images