2023. 4. 12. 17:58ㆍdocker
도커 이미지를 항상 도커 hub에 있는 거를 가져와서 사용했는데
직접 도커 이미지를 만들어서 사용할 수 있고, 만든 도커 이미지를 도커 허브에 올려서 공유할 수 있습니다. (npm같은)
복습
- 도커 이미지는 컨테이너를 만들기 위해 필요한 설정/종속성들을 갖고 있는 소프르퉤어 패키지
- 도커 이미지는 도커 hub에 이미 만들어 놓은 것을 이용할 수 있고 , 직접 내가 만든 걸 도커 hub에 업로드해서 공유할 수 있습니다.
명령어
docker create <이미지 이름>
도커 이미지 생성 순서
Dockerfile작성 --> 도커 클라이언트 --> 도커 서버 --> 이미지 생성
- dockerfile : 도커 이미지 만들기 위한 설정 파일. 컨테이너가 어떻게 행동할 지에 대한 설정들을 정의합니다.
- 도커 클라이언트 : dockerfile에 입력된 것들이 도커 클라이언트에 전달합니다.
- 도커 서버 : 도커 클라이언트에 전달된 모든 중요한 작업들을 수행합니다.
도커 파일 만드는 순서 (도커 이미지가 필요한 게 무엇인지 생각)
베이스 이미지 명시 (파일 스냅샷)
추가적으로 필요한 파일들 다운받기 위해 몇 가지 명령어 명시 (파일 스냅샷)
컨테이너 시작 시 실행 될 명령어 명시. ex) docker run mysql
실습해보기!
* 목표
"hello" 문구 출력하기
* 순서
1. 폴더 하나 생성 ex) dockerfile-folder
2. 생성한 폴더에 "Dockerfile" 이름의 파일 하나 생성
3. 그 안에 어떻게 진행해 나갈지 작성
Dockerfile
# 베이스 이미지 명시
FROM alpine
# 추가적으로 필요한 파일들 다운로드 - 현재는 hello만 출력하므로 주석처리!
# RUN command
# 컨테이너 시작시 실행 될 명령어 명시
CMD ["echo" ,"hello"] // 노드라고 치면 ["npm" , "start"]
* FROM / RUN / CMD 등은 도커 서버에게 무엇을 하라고 알려주는 예약어
FROM
이미지 생성시 기반이 되는 이미지 레이어
ex ) ebuntu:14.04 , node:16
RUN
도커 이미지 생성되기 전 수행할 쉘 명령어
CMD
컨테이너가 시작했을 때 실행할 실행파일 또는 쉘 스크립트입니다. 해당 명령어는 DockerFile내 1회만 쓸 수 있습니다.
4. 베이스 이미지부터 실제 값으로 추가해주기
5. 베이스 이미지는 ubuntu나 centOS 써도 되는데 hello 출력하는 기능은 큰 사이즈 베이스 이미지 쓸 필요 없으므로 사이즈 작은 alpine베이스 이미지 사용!
6. hello 출력하기 위해 echo 사용하는데 이미 alpine안에 echo 사용하게 할 수 있는 파일이 있어 RUN 주석처리함
7. 마지막으로 컨테이너 시작 시 실행 될 명령어 "echo hello" 를 적어준다.
도커 파일 작성후 빌드
docker build ./
dockerfile에 입력된 것들을 도커 클라이언트에 전달되 도커 서버가 인식하게 해야하는데 그렇게 하기 위한 명령어입니다.
도커 실행
빌드해서 올린 도커를 실행해봅시다. id값으로 실행합니다.
hello가 잘 출력된 것을 확인할 수 있습니다!
도커 이미지 기억하기 쉬운 이름으로 주기
도커 빌드 후 생성된 난수로 실행시키기 불편할 수 있습니다. 이 때 네이밍을 줘서 쉽게 실행시킬 수 있는데 빌드 시 아래와 같이 줄 수 있습니다.
-t 태그와 <아이디>/<레포지토리 이름 >:<버전> 포맷으로 추고 ./ 로 현재 디렉토리 위치의 파일을 빌드한다고 명시하면 됩니다.
docker build -t corgi93/hello:latest ./
'docker' 카테고리의 다른 글
[Docker] Docker Volume(볼륨)을 이용해 빌드 없이 소스 코드 반영하기 (0) | 2023.04.14 |
---|---|
[Docker] node.js 애플리케이션 도커로 만들기 (0) | 2023.04.13 |
[Docker] Docker 실행 중인 컨테이너에서 터미널로 접근하기 (0) | 2023.04.12 |
[Docker] Docker 레디스(redis)로 띄우기 (0) | 2023.04.12 |
[Docker] Docker 정리 (4) - Docker 명령어들 (0) | 2023.04.10 |