인프런에서 결제한 도커 강의 학습 및 내용 정리 진행. 이전에 도커에 대해 몇개의 강의 및 책을 학습한 적은 있어 대략적인 방식만 알고 있는 상태에서, 실제 개발에 적용 가능한지 확인을 위해 학습 중.
레디스를 이용한 컨테이너 이해
레디스를 도커 환경에서 실행
- 레디스 서버가 먼저 작동 → 레디스 클라이언트 실행 후 명령어를 레디스 서버에 전달
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. 직접 도커 이미지를 만들어 보기
도커 이미지 생성하는 순서
현재 까지는 도커 허브에 있는 이미지를 사용.
도커 이미지를 만들어서 사용 가능. 해당 이미지를 도커 허브에 공유 가능
도커 이미지 생성 순서
- Dockerfile 작성
- 도커 이미지를 만들기 위한 설정 파일. 컨테이너의 행동 설정 정의
- 도커 클라이언트
- 도커 서버
- 이미지 생성
Dockerfile 만들기
도커 파일이란
도커 이미지를 만들기 위한 설정 파일, 컨테이너가 어떻게 행동해야 되는지에 대한 설정 정의
도커 파일 만드는 순서 (도커 이미지가 필요한 것이 무엇인지 생각)
- 베이스 이미지 명시 (파일 스냅샷에 해당)
- 추가적으로 필요한 파일을 다운 받기 위한 몇가지 명령어를 명시 (파일 스냅샷에 추가)
- 컨테이너 시작시 실행 될 명령어를 명시해준다. (시작시 실행 될 명령어에 해당)
베이스 이미지란?
도커 이미지는 여러개의 레이어로 되어 있다.
그 중에 베이스 이미지는 이 이미지의 기반이 되는 부분이다.
레이어는 중간 단계의 이미지라고 생각하면 된다.
OS라고 생각하면 된다 (Window, MacOS, Linux 등등)
실제 생성
- 목표는 hello 문구 출력
순서
- 도커 파일을 만들 폴더 하나 만들기 ex) dockerfile-folder
- 원하는 에디터로 해당 폴더 접근
- 파일 생성 이름은 Dockerfile 생성
- 기본 뼈대 생성
Docker 파일 형태
1
2
3
4
5
6
7
8
# 베이스 이미지 명시
FROM baseImage
# 추가적으로 필요한 파일을 다운로드
RUN command
# 컨테이너 시작시 실행될 명령어 명시
CMD ["executable"]
- 실제 값 추가
실제값
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