2022. 11. 25. 18:38ㆍ쿠버네티스
1. pull
Repository에 저장되어 있는 이미지를 설치하는 명령어
2. push
이미지를 Repository에 배포 할 수 있는 명령어
Repository는 https://hub.docker.com 에서 확인 할 수 있습니다.
예를 들어 nginx 이미지를 검색 해 보겠습니다.
지금까지 컨테이너 생성에 사용한 이미지는 이곳에서 설치한 것입니다.
계정을 생성 한뒤 Repository를 생성하면 자신의 이미지를 업로드 할 수도 있습니다.
이미지 생성 한뒤 배포 해보기
1. 이미지로 만들 컨테이너 생성
1.1 nginx 이미지로 컨테이너 생성
1.2 index.html 생성
1.3 생성한 index.html 파일을 컨테이너의 /usr/share/nginx/html 아래로 복사
1.4 IP:PORT 접속
2. 이미지 생성
이미지 생성에는 두가지 방법이 있습니다.
- commit 명령어로 이미지 생성하기
- Dockerfile 파일을 만든뒤 해당 파일을 사용해서 이미지 생성하기
2.1 commit 명령어로 이미지 생성
1) Options 확인
commit 명령어 사용 방법과 옵션에 대한 설명을 확인 할 수 있습니다.
2) 이미지 생성
- a 옵션을 사용하여 이미지 생성자가 chang라고 설정
- nginx_web01 컨테이너를 사용하여 이미지 생성
- REPOSITORY:tag은 생략 (이 부분을 생략하면 none이라고 표시됨)
REPOSITORY는 입력하고 TAG를 생략하면 latest로 표시됨
hub.docker.com에 업로드 하기 위해서는 계정명/REPOSITORY 형식으로 바꿔줘야 합니다.
이미지를 생성할 때 이와 같은 형식으로 생성하지 않았어도 tag 명령어를 통해 변경 해줄 수 있습니다.
2.2 Dockerfile 파일로 이미지 생성
Dockerfile 명령어
- FROM : 이미지를 생성할 때 사용할 베이스 이미지 지정
- RUN : 이미지를 생성할 때 실행 할 명령어 지정
- WORKDIR : 작업 디렉터리 지정
- COPY : 파일과 디렉터리를 복사
- ENV : 환경변수값 지정, 따로 지정 해주지 않으면 기본값인 local로 지정
- ENTRYPOINT : 컨테이너 생성할 때 실행되는 명령어 지정
- CMD : 컨테이너 생성할 때 실행되는 명령어 지정
- MAINTAINER : 이미지 생성자 정보 입력
ENTRYPOINT와 CMD 차이
docker run 명령어로 컨테이너 생성 할 때 ENTRYPOINT는 무조건 실행되고 CMD는 수정이 가능합니다.
예를 들어 둘다 echo A 라고 설정했다고 가정
docker run Dockerfile echo B라고 했을 때 ENTRYPOINT의 경우 AB로 출력이 되고 CMD의 경우 B만 출력
즉 ENTRYPOINT는 Dockerfile에서 설정한 명령어를 그대로 출력 한뒤 docker run 뒤에 나온 명령어도 출력
CMD의 경우 Dockerfile에서 설정한 명령어가 docker run 뒤에 나온 명령어로 수정 되었다고 인식하기 때문에 docker run 뒤에 나온 명령어인 echo B만 실행
1) Dockerfile 생성
- centos7 이미지를 기본 이미지로 지정
- 업데이트 후 FTP 서비스 설치
- 이미지 생성자 정보 : keum@domain.com
- 작업 디렉터리 : /home/keum/Dockerdir, Dockerfile이 위치한 디렉터리
- 컨테이너 생성시 echo "test Dockerfile" 실행
2) Dockerfile 파일 Build 하기
Build : Dockerfile을 읽어 이미지를 생성
docker build [옵션] Dockerfile 파일 경로
옵션
생성된 이미지 확인
컨테이너 생성(이미지가 정상적으로 만들어졌는지 확인)
생성된 컨테이너(centos 7에 접속)
'docker attach 컨테이너명' 명령어 사용
이미지가 정상적으로 생성 된 것을 확인 할 수 있습니다.
3. docker hub에 업로드
docker 로그인
hub.docker.com에서 생성한 계정과 패스워드를 입력
업로드
https://hub.docker.com 에 keumjin 계정으로 Repository은 nginx_web01이고 Tag(버전)은 latest인 이미지 업로드
- https://hub.docker.com 에 keumjin 계정으로 로그인 후 확인
정상적으로 배포(업로드) 된것을 확인 할 수 있습니다.
'쿠버네티스' 카테고리의 다른 글
Docker - 볼륨(volume) (0) | 2022.11.07 |
---|---|
Docker란? (0) | 2022.10.27 |
쿠버네티스란? (0) | 2022.10.26 |