갬미의 성장일기
Day 33 - 도커 실습 본문
오늘 배운 내용
- 컨테이너 실행하기
- Dockerfile로 이미지 만들기
docker 명령어 완전 기본
⇒ docker images : Docker Host(local)에 있는 이미지를 확인
⇒ docker ps : 현재 running 되는 컨테이너
⇒ docker ps -a : 만들어진 모든 컨테이너(운영 중인 컨테이너 포함)
컨테이너 실행하기
1. push - create - start
docker hub에서 이미지 받아오기
docker pull nginx
버전을 다르게 하고싶다면 -> docker hub에서 이미지 검색 후 버전 확인 / 버전 태그 안해주면 가장 최신 버전 받아옴
이미지로부터 컨테이너 만들기
docker create -p 80:80 nginx
컨테이너를 실행하지 않으면 docker ps에서 안보임
실행되지 않고 만들어지기만 한 컨테이너까지 보고싶다면
docker ps -a
컨테이너 실행하기
docker start 컨테이너 번호
이름을 지정하여 컨테이너 생성하기
docker create -p 80:80 --name mynginx nginx
실행이 간편
docker start mynginx
2. docker run으로 한번에 하기
docker run 옵션들
-d : 백그라운드에서 실행하기
-p : port 설정
--name : 컨테이너 이름 설정
-i : 대화형
-t : 터미널 생성
우툰투 이미지를 받아 대화형으로 실행하기
docker run -it ubuntu
컨테이너 쉘 실행하기
docker exec -it 90f bash
-> 컨테이너의 쉘을 실행시키고 별도의 터미널 생성해줘, bash 명령어로 할거야
쉘에서 화면 바꾸기
echo "Hi Gymin" > usr/share/nginx/html/index.html
컨테이너를 stop -> start 하면 인덱스가 그대로 있지만
컨테이너를 rm -> run하면 다시 리셋됨
가지고 있는 이미지 -> 생 nginx
내가 작업을 하려면 이미지 -> 컨테이너 만들어서 그 위에 작업
stop - 작동하던 컨테이너를 '잠시' 멈춤 ---> start - 멈춰있던 컨테이너 다시 시작 | |
rm - 내가 작업한 컨테이너를 날림 ----> run - 원래 가지고 있던 이미지 (생 nginx) 로 컨테이너 만듦 |
따라서 내가 작업한 이미지를 보존해둘 필요가 있음
Custom docker container를 image로 만들어 hub에 올리기
도커허브에서 나의 repository 만들기
public - 외부에 공개하여 나의 이미지를 누구나 사용할 수 있게함
private - 나만 접근하여 이미지를 사용함 (1개 이상 사용시 과금됨)
내 레포에 이미지 올리기
docker commit mynginx gymin97/msa:v1
이미 만들어진 이미지는?
docker tag 이미지 이름 gymin97/msa:버젼명
이걸 홈에 올린다
docker login
docker push gymin/msa:v1
퍼블릭 docker hub에서 이미지를 가져오는것은 문제가 되지 않는다
push는 도커 로그인 된 계정에만 가능!
도커 이미지 올리는 cycle
docker run -d -p 80:80 --name mynginx gymin97/msa:v1 # ver1 가져와서 실행
docker commit mynginx gymin97/msa:v2 # 수정하고 v2 image 만들기
docker push gymin97/msa:v2 # 만든 image docker hub에 올리기
다 귀찮아~ 커스텀 이미지 바로 만들래!
Dockerfile 만들어서 image 생성하고 실행하기
컨테이너 안만들고 바로 원하는 이미지를 만드는 방법 -> docker file 이라는 명세서를 만들기
컨테이너 런타임이 이 명세서를 보고 이미지를 build한다
명세서에 내가 원하는 명령어를 입력 -> docker가 실행하는 것
명세서 사용의 이점
1. 기록이 남는다
2. 간편하다 (컨테이너 안만들어도 됨)
명세서 예시 ( 명세서 이름은 반드시 docker file이어야 함)
FROM centos:7 # FROM base image
# base image에서 이를 실행해라
RUN touch /etc/yum.repos.d/nginx.repo && echo -e '[nginx]\nname=nage repo\nbaseurl=http://nginx.org/packages/centos/7/$basearch/\ngpgcheck=0\nenabled=1' > /etc/yum.repos.d/nginx.repo
RUN yum -y install nginx
RUN yum install -y net-tools
# over write 할 수 없기때문에 이미 있는 index 지우기
RUN rm -f /usr/share/nginx/html/index.html
# 미리 만든 index 옮기기
COPY ./index.html /usr/share/nginx/html/index.html
# 80번 포트로
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
현재 VM에서 docker file과 index.html을 만든다
docker build -t gymin97/msa:v3 .
build - 이미지 만들어라
-t 꼭 이름을 정해줘야 한다
. 반드시 현재 경로인것을 명시해야 한다
이미지가 만들어졌기 때문에 실행하고 결과 확인 후 docker hub으로 push
docker run -d -p 80:80 --name mynginx gymin97/msa:v3
docker push gymin97/msa:v3
cycle
vi Dockerfile
vi index.html
docker build -t ID/Repo:name .
docker run -d -p 80:80 --name containerName ID/Repo:name
docker push ID/Repo:name
그러면 nginx와 tomcat 만들때 두 개의 도커파일에 각각 설치 과정을 입력해줘야 하는건가요??
--> ㅇㅇ
오늘의 회고
- 도커는 뭔가 깃헙이랑 비슷한것 같다 (사용 목적만 살짝 다른 깃허브인듯,,?) 명령어도 비슷한게 많고 컨셉도 유사해서 이해하는데 많은 도움이 되었다
- 오늘은 실습이 많기도 하고 같은 결과를 여러 방법으로 띄워보았는데 헷갈리면서도 재미있었다
- 월말이 되면 조급한 마음이 들곤하는데 오늘 강사님이 너무 조급할 필요없이 조금씩 성장해가면 그걸로도 충분하다고 이야기 해주셔서 스스로를 조금 돌아보게되었다
- 지금까지 어렵다고 회피했던 기술들을 정통으로 마주하면서 얼마나 많이 성장했는지 다시금 생각하게 되었고, 어제의 나보다 오늘의 나는 더 많은걸 알고있으니까 그걸로 만족해야겠다는 생각을 했다
'Cloud > Cloud 공부일기' 카테고리의 다른 글
Day 35 - 네트워크 특강 (0) | 2022.02.25 |
---|---|
Day 34 - 도커 실습 (0) | 2022.02.24 |
Day 32 - 도커 (이론, 실습) (0) | 2022.02.22 |
Day 31 - 가상화, 가상머신 만들기(Virtual Box, CentOS) (0) | 2022.02.21 |
Day 30 - 클라우드, 가상화, 도커, 쿠버네티스 개념 (0) | 2022.02.18 |